@capillarytech/creatives-library 7.18.0-beta.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/app.js +27 -54
  2. package/assets/Line_Preview_English.svg +24 -0
  3. package/assets/Line_Preview_Japanese.svg +24 -0
  4. package/components/CapTagList/index.js +2 -2
  5. package/components/CapTagList/messages.js +8 -0
  6. package/components/Ckeditor/index.js +4 -2
  7. package/components/Ckeditor/style.scss +3 -0
  8. package/components/FormBuilder/_formBuilder.scss +4 -16
  9. package/components/FormBuilder/index.js +4 -3
  10. package/components/FormBuilder/messages.js +4 -0
  11. package/components/Sidebar/index.js +4 -4
  12. package/config/path.js +1 -1
  13. package/containers/App/constants.js +95 -0
  14. package/containers/App/index.js +52 -0
  15. package/containers/App/sagas.js +8 -3
  16. package/containers/Assets/Gallery/index.js +17 -3
  17. package/containers/Assets/Gallery/messages.js +4 -0
  18. package/containers/Assets/Gallery/sagas.js +14 -14
  19. package/containers/Cap/index.js +84 -50
  20. package/containers/Cap/sagas.js +20 -12
  21. package/containers/Cap/selectors.js +13 -13
  22. package/containers/Cap/tests/__snapshots__/index.test.js.snap +1 -1
  23. package/containers/Cap/tests/saga.test.js +81 -1
  24. package/containers/Dashboard/index.js +34 -17
  25. package/containers/Dashboard/sagas.js +7 -1
  26. package/containers/Ebill/index.js +16 -3
  27. package/containers/Ebill/sagas.js +18 -11
  28. package/containers/Email/index.js +20 -3
  29. package/containers/Email/sagas.js +34 -23
  30. package/containers/LanguageProvider/index.js +49 -31
  31. package/containers/LanguageProvider/tests/index.test.js +5 -3
  32. package/containers/Line/Create/index.js +15 -2
  33. package/containers/Line/Create/sagas.js +26 -17
  34. package/containers/Line/Edit/sagas.js +12 -13
  35. package/containers/Login/index.js +36 -11
  36. package/containers/MobilePush/Create/index.js +17 -2
  37. package/containers/MobilePush/Create/sagas.js +18 -12
  38. package/containers/MobilePush/Edit/index.js +20 -3
  39. package/containers/MobilePush/Edit/sagas.js +30 -20
  40. package/containers/Sms/Create/index.js +15 -2
  41. package/containers/Sms/Create/sagas.js +8 -6
  42. package/containers/Sms/Edit/index.js +15 -3
  43. package/containers/Sms/Edit/sagas.js +14 -8
  44. package/containers/TagList/constants.js +23 -0
  45. package/containers/Templates/actions.js +0 -5
  46. package/containers/Templates/index.js +47 -14
  47. package/containers/Templates/sagas.js +20 -23
  48. package/containers/WeChat/MapTemplates/index.js +19 -2
  49. package/containers/WeChat/MapTemplates/sagas.js +17 -17
  50. package/containers/WeChat/RichmediaTemplates/Create/index.js +18 -2
  51. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +11 -8
  52. package/containers/WeChat/RichmediaTemplates/Edit/index.js +21 -2
  53. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +9 -5
  54. package/entry.js +2 -0
  55. package/global-styles.js +2 -2
  56. package/gtm/eventDefinitionsMap.js +1 -1
  57. package/helpers/intl-enzym-test-helpers.js +1 -1
  58. package/hoc/withReactRouterV3Compatibility.js +66 -0
  59. package/index.js +12 -0
  60. package/initialReducer.js +32 -0
  61. package/initialState.js +1 -0
  62. package/mfe-exposed-components.js +8 -0
  63. package/package.json +16 -11
  64. package/routes.js +206 -749
  65. package/services/api.js +62 -17
  66. package/services/tests/api.test.js +248 -1
  67. package/styles/components/navigation/_leftnav.scss +13 -0
  68. package/styles/containers/layout/_layoutPage.scss +14 -0
  69. package/tests/integration/TemplateCreation/TemplateCreation.integration.test.js +21 -16
  70. package/tests/store.test.js +5 -3
  71. package/translations/en.json +1 -9
  72. package/translations/ja-JP.json +0 -8
  73. package/translations/zh.json +0 -8
  74. package/utils/authWrapper.js +43 -17
  75. package/utils/cdnTransformation.js +73 -44
  76. package/utils/checkStore.js +21 -0
  77. package/utils/common.js +198 -8
  78. package/utils/commonUtils.js +17 -1
  79. package/utils/customAuthWrapper.js +62 -0
  80. package/utils/customConnectedAuthWrapper.js +26 -0
  81. package/utils/history.js +8 -0
  82. package/utils/injectReducer.js +2 -0
  83. package/utils/injectSaga.js +2 -0
  84. package/utils/tagValidations.js +2 -2
  85. package/utils/tests/cdnTransformation.test.js +6 -4
  86. package/utils/tests/common.mockdata.js +623 -0
  87. package/utils/tests/common.test.js +273 -0
  88. package/utils/tests/commonUtil.test.js +79 -0
  89. package/v2Components/CapDeviceContent/index.js +330 -0
  90. package/v2Components/CapDeviceContent/index.scss +115 -0
  91. package/v2Components/CapDeviceContent/messages.js +94 -0
  92. package/v2Components/CapDeviceContent/tests/index.test.js +89 -0
  93. package/v2Components/CapImageUpload/constants.js +6 -0
  94. package/v2Components/CapImageUpload/index.js +23 -15
  95. package/v2Components/CapImageUpload/index.scss +6 -0
  96. package/v2Components/CapImageUpload/messages.js +7 -7
  97. package/v2Components/CapInAppCTA/constants.js +25 -0
  98. package/v2Components/CapInAppCTA/index.js +279 -0
  99. package/v2Components/CapInAppCTA/index.scss +99 -0
  100. package/v2Components/CapInAppCTA/messages.js +85 -0
  101. package/v2Components/CapTagList/index.js +149 -26
  102. package/v2Components/CapTagList/messages.js +12 -0
  103. package/v2Components/CapTagList/style.scss +26 -0
  104. package/v2Components/CapVideoUpload/constants.js +6 -0
  105. package/v2Components/CapVideoUpload/index.js +48 -22
  106. package/v2Components/CapVideoUpload/index.scss +4 -2
  107. package/v2Components/CapVideoUpload/messages.js +10 -6
  108. package/v2Components/CapWhatsappQuickReply/index.js +255 -0
  109. package/v2Components/CapWhatsappQuickReply/index.scss +54 -0
  110. package/v2Components/CapWhatsappQuickReply/messages.js +32 -0
  111. package/v2Components/Ckeditor/index.js +56 -22
  112. package/v2Components/Ckeditor/style.scss +3 -0
  113. package/v2Components/Ckeditor/tests/index.test.js +44 -0
  114. package/v2Components/CmsTemplatesComponent/index.js +1 -0
  115. package/v2Components/CmsTemplatesComponent/messages.js +4 -0
  116. package/v2Components/EmailMobilePreview/index.js +4 -2
  117. package/v2Components/EmailPreviewV2/index.js +6 -4
  118. package/v2Components/EmailPreviewV2/tests/__snapshots__/index.test.js.snap +0 -3
  119. package/v2Components/FormBuilder/_formBuilder.scss +1 -0
  120. package/v2Components/FormBuilder/constants.js +1 -1
  121. package/v2Components/FormBuilder/index.js +111 -29
  122. package/v2Components/FormBuilder/messages.js +4 -0
  123. package/v2Components/FormBuilder/tests/index.test.js +5 -2
  124. package/v2Components/MobilePushPreviewV2/index.js +57 -22
  125. package/v2Components/NavigationBar/constants.js +1 -0
  126. package/v2Components/NavigationBar/index.js +84 -113
  127. package/v2Components/NavigationBar/messages.js +8 -0
  128. package/v2Components/NavigationBar/style.js +9 -0
  129. package/v2Components/NavigationBar/tests/index.test.js +32 -9
  130. package/v2Components/NavigationBar/tests/mockData.js +1 -0
  131. package/v2Components/NewCallTask/tests/index.test.js +5 -3
  132. package/v2Components/Pagination/index.js +2 -1
  133. package/v2Components/RenderRoute/RenderRoute.js +11 -0
  134. package/v2Components/RenderRoute/index.js +1 -0
  135. package/v2Components/TemplatePreview/_templatePreview.scss +535 -0
  136. package/v2Components/TemplatePreview/assets/images/inapp_mobile_android_bottom.svg +11 -0
  137. package/v2Components/TemplatePreview/assets/images/inapp_mobile_android_full.svg +11 -0
  138. package/v2Components/TemplatePreview/assets/images/inapp_mobile_android_modal.svg +11 -0
  139. package/v2Components/TemplatePreview/assets/images/inapp_mobile_android_top.svg +11 -0
  140. package/v2Components/TemplatePreview/assets/images/inapp_mobile_ios_bottom.svg +6 -0
  141. package/v2Components/TemplatePreview/assets/images/inapp_mobile_ios_full.svg +18 -0
  142. package/v2Components/TemplatePreview/assets/images/inapp_mobile_ios_modal.svg +7 -0
  143. package/v2Components/TemplatePreview/assets/images/inapp_mobile_ios_top.svg +13 -0
  144. package/v2Components/TemplatePreview/index.js +745 -362
  145. package/v2Components/TemplatePreview/messages.js +8 -0
  146. package/v2Components/TemplatePreview/tests/__snapshots__/index.test.js.snap +47 -14
  147. package/v2Components/TemplatePreview/tests/index.test.js +9 -0
  148. package/v2Components/WhatsappStatusContainer/_whatsappStatusContainer.scss +8 -1
  149. package/v2Containers/App/constants.js +12 -6
  150. package/v2Containers/App/sagas.js +0 -1
  151. package/v2Containers/Assets/Gallery/index.js +1 -0
  152. package/v2Containers/Assets/Gallery/sagas.js +15 -14
  153. package/v2Containers/BeeEditor/index.js +3 -1
  154. package/v2Containers/BeeEditor/sagas.js +8 -5
  155. package/v2Containers/CallTask/sagas.js +7 -1
  156. package/v2Containers/Cap/actions.js +4 -0
  157. package/v2Containers/Cap/constants.js +20 -1
  158. package/v2Containers/Cap/index.js +116 -17
  159. package/v2Containers/Cap/messages.js +8 -0
  160. package/v2Containers/Cap/reducer.js +18 -3
  161. package/v2Containers/Cap/sagas.js +64 -9
  162. package/v2Containers/Cap/selectors.js +27 -13
  163. package/v2Containers/Cap/tests/Cap.test.js +164 -0
  164. package/v2Containers/Cap/tests/__snapshots__/index.test.js.snap +2 -1
  165. package/v2Containers/Cap/tests/actions.test.js +11 -0
  166. package/v2Containers/Cap/tests/reducer.test.js +59 -0
  167. package/v2Containers/Cap/tests/saga.test.js +181 -2
  168. package/v2Containers/Cap/tests/selectors.test.js +42 -18
  169. package/v2Containers/CapFacebookPreview/sagas.js +7 -5
  170. package/v2Containers/CreativesContainer/SlideBoxContent.js +86 -4
  171. package/v2Containers/CreativesContainer/SlideBoxFooter.js +4 -3
  172. package/v2Containers/CreativesContainer/SlideBoxHeader.js +30 -14
  173. package/v2Containers/CreativesContainer/constants.js +5 -0
  174. package/v2Containers/CreativesContainer/index.js +157 -38
  175. package/v2Containers/CreativesContainer/index.scss +12 -0
  176. package/v2Containers/CreativesContainer/messages.js +33 -1
  177. package/v2Containers/CreativesContainer/tests/SlideBoxContent.test.js +11 -0
  178. package/v2Containers/CreativesContainer/tests/SlideBoxFooter.test.js +5 -2
  179. package/v2Containers/CreativesContainer/tests/SlideBoxHeader.test.js +7 -1
  180. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxContent.test.js.snap +227 -0
  181. package/v2Containers/CreativesContainer/tests/__snapshots__/SlideBoxHeader.test.js.snap +73 -0
  182. package/v2Containers/CreativesContainer/tests/__snapshots__/index.test.js.snap +80 -0
  183. package/v2Containers/CreativesContainer/tests/index.test.js +16 -0
  184. package/v2Containers/Ebill/sagas.js +3 -10
  185. package/v2Containers/Email/index.js +38 -19
  186. package/v2Containers/Email/initialSchema.js +1 -1
  187. package/v2Containers/Email/sagas.js +22 -26
  188. package/v2Containers/EmailWrapper/index.js +18 -8
  189. package/v2Containers/FTP/index.js +2 -2
  190. package/v2Containers/FTP/sagas.js +3 -4
  191. package/v2Containers/Facebook/sagas.js +26 -17
  192. package/v2Containers/InApp/actions.js +64 -0
  193. package/v2Containers/InApp/constants.js +160 -0
  194. package/v2Containers/InApp/index.js +792 -0
  195. package/v2Containers/InApp/index.scss +50 -0
  196. package/v2Containers/InApp/messages.js +114 -0
  197. package/v2Containers/InApp/reducer.js +109 -0
  198. package/v2Containers/InApp/sagas.js +151 -0
  199. package/v2Containers/InApp/selectors.js +12 -0
  200. package/v2Containers/InApp/tests/action.test.js +53 -0
  201. package/v2Containers/InApp/tests/index.test.js +165 -0
  202. package/v2Containers/InApp/tests/mockData.js +898 -0
  203. package/v2Containers/InApp/tests/reducer.test.js +177 -0
  204. package/v2Containers/InApp/tests/sagas.test.js +391 -0
  205. package/v2Containers/InApp/utils.js +12 -0
  206. package/v2Containers/LanguageProvider/index.js +17 -5
  207. package/v2Containers/LanguageProvider/reducer.js +3 -2
  208. package/v2Containers/LanguageProvider/sagas.js +7 -8
  209. package/v2Containers/LanguageProvider/selectors.js +2 -1
  210. package/v2Containers/LanguageProvider/tests/index.test.js +5 -2
  211. package/v2Containers/LanguageProvider/tests/reducer.test.js +6 -3
  212. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/content.test.js.snap +28 -16
  213. package/v2Containers/Line/Container/ImageCarousel/tests/__snapshots__/index.test.js.snap +2 -2
  214. package/v2Containers/Line/Container/ImageCarousel/tests/content.test.js +5 -3
  215. package/v2Containers/Line/Container/ImageCarousel/tests/index.test.js +5 -3
  216. package/v2Containers/Line/Container/ImageMap/index.js +1 -1
  217. package/v2Containers/Line/Container/Text/index.js +16 -1
  218. package/v2Containers/Line/Container/Video/index.js +2 -1
  219. package/v2Containers/Line/Container/Wrapper/tests/__snapshots__/index.test.js.snap +18134 -107
  220. package/v2Containers/Line/Container/Wrapper/tests/index.test.js +5 -3
  221. package/v2Containers/Line/Container/Wrapper/utils.js +1 -1
  222. package/v2Containers/Line/Container/index.js +4 -0
  223. package/v2Containers/Line/Container/sagas.js +30 -20
  224. package/v2Containers/Line/Container/tests/__snapshots__/index.test.js.snap +123 -81
  225. package/v2Containers/Line/Container/tests/index.test.js +5 -2
  226. package/v2Containers/Login/index.js +1 -2
  227. package/v2Containers/MobilePush/Create/index.js +40 -17
  228. package/v2Containers/MobilePush/Create/sagas.js +18 -12
  229. package/v2Containers/MobilePush/Edit/index.js +16 -7
  230. package/v2Containers/MobilePush/Edit/sagas.js +30 -20
  231. package/v2Containers/MobilepushWrapper/index.js +3 -0
  232. package/v2Containers/Rcs/sagas.js +14 -14
  233. package/v2Containers/Rcs/tests/__snapshots__/index.test.js.snap +123 -87
  234. package/v2Containers/Rcs/tests/index.test.js +5 -3
  235. package/v2Containers/Sms/Create/sagas.js +10 -6
  236. package/v2Containers/Sms/Edit/sagas.js +14 -8
  237. package/v2Containers/SmsTrai/Create/sagas.js +9 -10
  238. package/v2Containers/SmsTrai/Create/tests/__snapshots__/index.test.js.snap +4 -4
  239. package/v2Containers/SmsTrai/Edit/tests/__snapshots__/index.test.js.snap +12 -8
  240. package/v2Containers/SmsTrai/Edit/tests/index.test.js +5 -3
  241. package/v2Containers/TagList/_tagList.scss +18 -0
  242. package/v2Containers/TagList/index.js +81 -42
  243. package/v2Containers/TagList/tests/TagList.test.js +6 -7
  244. package/v2Containers/TagList/tests/mockdata.js +10 -166
  245. package/v2Containers/TagList/tests/utils.test.js +17 -0
  246. package/v2Containers/TagList/utils.js +15 -0
  247. package/v2Containers/Templates/_templates.scss +60 -5
  248. package/v2Containers/Templates/actions.js +6 -5
  249. package/v2Containers/Templates/constants.js +2 -1
  250. package/v2Containers/Templates/index.js +576 -181
  251. package/v2Containers/Templates/messages.js +52 -8
  252. package/v2Containers/Templates/reducer.js +3 -1
  253. package/v2Containers/Templates/sagas.js +54 -38
  254. package/v2Containers/Templates/tests/__snapshots__/index.test.js.snap +669 -43
  255. package/v2Containers/Templates/tests/actions.test.js +19 -0
  256. package/v2Containers/Templates/tests/index.test.js +53 -1
  257. package/v2Containers/Templates/tests/mockData.js +45 -1
  258. package/v2Containers/Templates/tests/reducer.test.js +50 -0
  259. package/v2Containers/Templates/tests/sagas.test.js +116 -3
  260. package/v2Containers/Templates/tests/selector.test.js +17 -0
  261. package/v2Containers/TemplatesV2/index.js +180 -8
  262. package/v2Containers/TemplatesV2/messages.js +8 -0
  263. package/v2Containers/TemplatesV2/tests/index.test.js +104 -0
  264. package/v2Containers/TemplatesV2/tests/mockData.js +685 -0
  265. package/v2Containers/Viber/constants.js +58 -0
  266. package/v2Containers/Viber/index.js +404 -421
  267. package/v2Containers/Viber/index.scss +107 -0
  268. package/v2Containers/Viber/messages.js +70 -2
  269. package/v2Containers/Viber/sagas.js +22 -14
  270. package/v2Containers/Viber/style.js +20 -0
  271. package/v2Containers/Viber/tests/index.test.js +299 -0
  272. package/v2Containers/Viber/tests/mockData.js +134 -0
  273. package/v2Containers/WeChat/MapTemplates/sagas.js +22 -14
  274. package/v2Containers/WeChat/RichmediaTemplates/Create/sagas.js +12 -11
  275. package/v2Containers/WeChat/RichmediaTemplates/Edit/sagas.js +9 -5
  276. package/v2Containers/Whatsapp/actions.js +16 -0
  277. package/v2Containers/Whatsapp/constants.js +24 -0
  278. package/v2Containers/Whatsapp/index.js +892 -222
  279. package/v2Containers/Whatsapp/index.scss +91 -1
  280. package/v2Containers/Whatsapp/messages.js +98 -1
  281. package/v2Containers/Whatsapp/reducer.js +19 -0
  282. package/v2Containers/Whatsapp/sagas.js +67 -12
  283. package/v2Containers/Whatsapp/styles.scss +35 -0
  284. package/v2Containers/Whatsapp/tests/__snapshots__/index.test.js.snap +34983 -24886
  285. package/v2Containers/Whatsapp/tests/__snapshots__/utils.test.js.snap +12 -0
  286. package/v2Containers/Whatsapp/tests/actions.test.js +21 -0
  287. package/v2Containers/Whatsapp/tests/index.test.js +17 -4
  288. package/v2Containers/Whatsapp/tests/mockData.js +77 -0
  289. package/v2Containers/Whatsapp/tests/reducer.test.js +67 -0
  290. package/v2Containers/Whatsapp/tests/saga.test.js +201 -0
  291. package/v2Containers/Whatsapp/tests/utils.test.js +18 -0
  292. package/v2Containers/Whatsapp/utils.js +65 -4
  293. package/v2Containers/Zalo/actions.js +24 -0
  294. package/v2Containers/Zalo/constants.js +59 -0
  295. package/v2Containers/Zalo/index.js +548 -0
  296. package/v2Containers/Zalo/index.scss +75 -0
  297. package/v2Containers/Zalo/messages.js +86 -0
  298. package/v2Containers/Zalo/reducer.js +63 -0
  299. package/v2Containers/Zalo/saga.js +45 -0
  300. package/v2Containers/Zalo/selectors.js +19 -0
  301. package/v2Containers/Zalo/tests/actions.test.js +26 -0
  302. package/v2Containers/Zalo/tests/index.test.js +149 -0
  303. package/v2Containers/Zalo/tests/mockData.js +11527 -0
  304. package/v2Containers/Zalo/tests/reducer.test.js +96 -0
  305. package/v2Containers/Zalo/tests/saga.test.js +118 -0
  306. package/v2Containers/Zalo/tests/selector.test.js +51 -0
  307. package/v2Containers/mockdata.js +1531 -680
  308. package/containers/TestPage/constants.js +0 -7
  309. package/containers/TestPage/index.js +0 -31
  310. package/containers/TestPage/messages.js +0 -13
  311. package/containers/TestPage/reducer.js +0 -21
  312. package/containers/TestPage/sagas.js +0 -11
  313. package/containers/Testv2/actions.js +0 -15
  314. package/containers/Testv2/constants.js +0 -7
  315. package/containers/Testv2/index.js +0 -47
  316. package/containers/Testv2/messages.js +0 -21
  317. package/containers/Testv2/reducer.js +0 -23
  318. package/containers/Testv2/sagas.js +0 -11
  319. package/containers/Testv2/selectors.js +0 -25
  320. package/reducers.js +0 -73
  321. package/store.js +0 -61
  322. package/utils/tests/asyncInjectors.test.js +0 -173
  323. package/v2Containers/TestPage/constants.js +0 -7
  324. package/v2Containers/TestPage/index.js +0 -31
  325. package/v2Containers/TestPage/messages.js +0 -13
  326. package/v2Containers/TestPage/reducer.js +0 -21
  327. package/v2Containers/TestPage/sagas.js +0 -11
  328. package/v2Containers/Testv2/actions.js +0 -15
  329. package/v2Containers/Testv2/constants.js +0 -7
  330. package/v2Containers/Testv2/index.js +0 -47
  331. package/v2Containers/Testv2/messages.js +0 -21
  332. package/v2Containers/Testv2/reducer.js +0 -23
  333. package/v2Containers/Testv2/sagas.js +0 -11
  334. package/v2Containers/Testv2/selectors.js +0 -25
@@ -7,26 +7,23 @@
7
7
  import React from 'react';
8
8
  import PropTypes from 'prop-types';
9
9
  import styled from 'styled-components';
10
- import { isEmpty, forEach } from 'lodash';
11
10
  import { loadItem } from 'services/localStorageApi';
12
11
  import { intlShape, injectIntl } from 'react-intl';
13
- import { FONT_COLOR_04 } from '@capillarytech/cap-ui-library/styled/variables';
14
- import TopBar from '../TopBar';
12
+ import { get } from 'lodash';
15
13
  import messages from './messages';
16
14
  import { LOYALTY } from '../../v2Containers/App/constants';
17
15
  import {
18
16
  HELP_URL,
19
17
  LOYALTY_HELP_URL,
20
- ENABLE_AI_SUGGESTIONS,
18
+ ENABLE_NEW_LEFT_NAVIGATION,
19
+ DEFAULT_MODULE,
20
+ AI_DOCUMENTATION_BOT_DISABLED,
21
21
  } from '../../v2Containers/Cap/constants';
22
- const PRODUCT_MASTERS = 'masters';
23
- const EMBEDDED = 'embedded';
24
-
25
- const AppWrapper = styled.div`
26
- .navigation-setting-icon {
27
- color: ${FONT_COLOR_04};
28
- }
29
- `;
22
+ import CapNavigation from '@capillarytech/cap-ui-library/CapNavigation';
23
+ import configPath from '../../config/path';
24
+ import * as Api from '../../services/api';
25
+ import { CapLeftNavigatioOpenCss, CapLeftNavigationCss } from './style';
26
+ import { EMBEDDED } from './constants';
30
27
 
31
28
  const CapWrapper = styled.div`
32
29
  position: absolute;
@@ -51,7 +48,7 @@ export class NavigationBar extends React.Component {
51
48
  }
52
49
 
53
50
  initializeSelectedProduct = () => {
54
- const {location, intl: {formatMessage}} = this.props;
51
+ const { location, intl: { formatMessage } } = this.props;
55
52
  const { pathname } = location;
56
53
  const parentModule = pathname.substring(pathname.lastIndexOf('/') + 1);
57
54
  switch (parentModule) {
@@ -64,7 +61,7 @@ export class NavigationBar extends React.Component {
64
61
  key: 'settings',
65
62
  placement: 'bottomRight',
66
63
  className: 'navigation-setting-icon',
67
- toolTip: formatMessage(messages.noProductSetting),
64
+ toolTip: formatMessage(messages.loyaltyCreativeSettings),
68
65
  },
69
66
  };
70
67
  default:
@@ -98,73 +95,26 @@ export class NavigationBar extends React.Component {
98
95
  };
99
96
 
100
97
  onHelpIconClick = () => {
101
- const {helpUrl} = this.state;
98
+ const { helpUrl } = this.state;
102
99
  if (helpUrl) {
103
100
  window.open(helpUrl, '_blank');
104
101
  }
105
102
  };
106
103
 
107
- getProxyOrgList = () => {
108
- const { userData } = this.props;
109
- const proxyOrgList = [];
110
- if (userData && userData.user && userData.user !== '') {
111
- const defaultOrgName = userData.user.orgName;
112
- const defaultOrgId = userData.user.orgID;
113
- proxyOrgList.push({ label: defaultOrgName, value: defaultOrgId, key: defaultOrgId });
114
- const orgList = userData.user.proxyOrgList;
115
- if (!isEmpty(orgList)) {
116
- forEach(orgList, (item) => {
117
- const id = item.orgID;
118
- const name = item.orgName;
119
- if (id !== defaultOrgId) {
120
- proxyOrgList.push({ label: name, value: id, key: id });
121
- }
122
- });
123
- }
124
- }
125
- return proxyOrgList;
126
- };
127
-
128
- getProductsList = () => {
129
- const { formatMessage } = this.props.intl;
130
- const { currentOrgDetails } = this.props.userData;
131
- const productsList = [];
132
- if (!isEmpty(currentOrgDetails)) {
133
- forEach(currentOrgDetails.module_details, (module = {}) => {
134
- if ((module.name || '').toLowerCase() !== PRODUCT_MASTERS) {
135
- const productName = module.code;
136
- const intlProductName = messages[productName];
137
- const moduleName = intlProductName ? formatMessage(intlProductName) : (module.name || '').toLowerCase();
138
- productsList.push({
139
- value: moduleName,
140
- url: module.url,
141
- key: module.code,
142
- });
143
- }
144
- });
145
- //below changes are temporary and should be fixed once we get correct modules list
146
- //changing campaigns module name to engage+
147
- //adding insights+ to module list
148
- productsList.push({
149
- value: formatMessage(messages.insights),
150
- url: 'analytics/v2/',
151
- key: 'analytics/v2/',
152
- });
153
- }
154
- return productsList;
155
- };
156
-
157
- getTopbarIcons = (showDocumentationBot = false) => {
158
- const {settingsIcon} = this.state;
104
+ getTopbarIcons = (showDocumentationBot = false, isLatestLeftNavigationEnabled = false) => {
105
+ const { settingsIcon } = this.state;
159
106
  const ICONS = [
160
107
  {
161
108
  iconType: 'help',
162
109
  key: 'help',
163
110
  onClickHandler: this.onHelpIconClick,
164
111
  },
165
- settingsIcon,
166
112
  ];
113
+ if (!isLatestLeftNavigationEnabled) {
114
+ ICONS.push(settingsIcon);
115
+ }
167
116
  return showDocumentationBot ? ICONS.slice(1) : ICONS; // If showDocumentationBot is true, help icon will be replaced by Aira icon on UI
117
+
168
118
  };
169
119
 
170
120
  getDropdownMenu = () => {
@@ -183,10 +133,6 @@ export class NavigationBar extends React.Component {
183
133
  ];
184
134
  };
185
135
 
186
- handleTopbarMenuChange = (option) => {
187
- window.location.pathname = option.link;
188
- };
189
-
190
136
  handleOrgChange = (orgId) => {
191
137
  const selectedOrg = loadItem('orgID');
192
138
  if (selectedOrg !== orgId) {
@@ -194,55 +140,79 @@ export class NavigationBar extends React.Component {
194
140
  }
195
141
  };
196
142
 
197
- handleProductChange = (product) => {
198
- const { location } = this.props;
199
- const { basename } = location;
200
- this.setState({ selectedProduct: product.value }, () => {
201
- if (product.url !== `${basename}/index`) {
202
- window.location.pathname = product.url;
203
- }
204
- });
205
- };
143
+ productSelection = () => {
144
+ const { location, intl: { formatMessage } } = this.props;
145
+ const { pathname } = location;
146
+ const parentModule = pathname.substring(pathname.lastIndexOf('/') + 1);
147
+ switch (parentModule) {
148
+ case LOYALTY:
149
+ return formatMessage(messages.loyaltyProgram);
150
+ default:
151
+ return formatMessage(messages.selectedProductDefault)
152
+
153
+ }
154
+ }
206
155
 
207
156
  render() {
208
157
  const {
209
158
  topbarMenuData,
210
- loggedIn,
211
159
  type,
212
160
  userData,
161
+ intl,
162
+ handleLeftNavBarExpanded,
163
+ leftNavbarExpandedProp,
213
164
  } = this.props;
214
- const showDocumentationBot = userData?.currentOrgDetails?.accessibleFeatures?.includes(ENABLE_AI_SUGGESTIONS);
215
- const productsList = this.getProductsList();
216
- const proxyOrgList = this.getProxyOrgList();
217
- const selectedOrg = loadItem('orgID');
165
+
166
+ const accessibleDocFeatures = get(userData, 'currentOrgDetails.accessibleFeatures', []);
167
+ const showDocumentationBot = !accessibleDocFeatures.includes(AI_DOCUMENTATION_BOT_DISABLED);
168
+
218
169
  const dropdownMenuProps = this.getDropdownMenu();
219
- const topbarIcons = this.getTopbarIcons(showDocumentationBot);
220
- const { selectedProduct } = this.state;
221
- const customTopBarProps = {};
170
+ const {
171
+ currentOrgDetails: {
172
+ accessibleFeatures = [],
173
+ } = {},
174
+ } = userData || {};
175
+ const isLatestLeftNavigationEnabled = accessibleFeatures?.includes(
176
+ ENABLE_NEW_LEFT_NAVIGATION,
177
+ );
178
+ const topbarIcons = this.getTopbarIcons(showDocumentationBot, isLatestLeftNavigationEnabled);
179
+ const topbarMenuDataModified = isLatestLeftNavigationEnabled ? [] : topbarMenuData;
180
+ const headerOverideCss = isLatestLeftNavigationEnabled && (leftNavbarExpandedProp ? CapLeftNavigatioOpenCss : CapLeftNavigationCss);
222
181
  return (
223
- <AppWrapper>
224
- {loggedIn && type !== EMBEDDED &&
225
- <TopBar
226
- productsList={productsList}
227
- selectedProduct={selectedProduct}
228
- handleProductChange={this.handleProductChange}
229
- proxyOrgList={proxyOrgList}
230
- selectedOrg={selectedOrg}
231
- handleOrgChange={this.handleOrgChange}
232
- topbarMenuData={topbarMenuData}
233
- handleTopbarMenuChange={this.handleTopbarMenuChange}
234
- dropdownMenuProps={dropdownMenuProps}
235
- topbarIcons={topbarIcons}
236
- showDocumentationBot={showDocumentationBot}
237
- {...customTopBarProps}
238
- />
239
- }
240
- <CapWrapper isEmbedded={type === EMBEDDED}>
241
- <ComponentWrapper>
242
- {React.Children.toArray(this.props.children)}
243
- </ComponentWrapper>
244
- </CapWrapper>
245
- </AppWrapper>
182
+ <CapNavigation
183
+ className="creatives-main-container"
184
+ showContent
185
+ userData={userData}
186
+ loadStorageItem={loadItem}
187
+ changeOrgEntity={this.handleOrgChange}
188
+ topbarMenuData={topbarMenuDataModified}
189
+ topbarSelectedMenuData={[DEFAULT_MODULE]}
190
+ dropdownMenuProps={dropdownMenuProps}
191
+ topbarIcons={topbarIcons}
192
+ sidebarMenuData={[]}
193
+ sidebarMenuItemsPosition={null}
194
+ defaultSelectedProduct={this.productSelection()}
195
+ skipStateForStorage
196
+ selectOrganization={intl.formatMessage(messages.selectOrganization)}
197
+ isLatestLeftNavigationEnabled={isLatestLeftNavigationEnabled}
198
+ history={history}
199
+ publicPath={configPath.publicPath}
200
+ getNavigationConfigApi={Api.getNavigationConfigApi}
201
+ showDocumentationBot={showDocumentationBot}
202
+ setLeftNavbarExpandedProp={handleLeftNavBarExpanded}
203
+ headerOverideCss={headerOverideCss}
204
+ request={Api?.request}
205
+ getAPICallObject={Api?.getAPICallObject}
206
+ >
207
+ <div data-testid="cap-wrapper">
208
+ <CapWrapper isEmbedded={type === EMBEDDED}>
209
+ <ComponentWrapper>
210
+ {React.Children.toArray(this.props.children)}
211
+ </ComponentWrapper>
212
+ </CapWrapper>
213
+ </div>
214
+ </CapNavigation>
215
+
246
216
  );
247
217
  }
248
218
  }
@@ -255,10 +225,11 @@ NavigationBar.propTypes = {
255
225
  settingsUrl: PropTypes.string,
256
226
  children: PropTypes.node,
257
227
  orgSettingsUrl: PropTypes.string,
258
- loggedIn: PropTypes.bool,
259
228
  intl: intlShape.isRequired,
260
229
  location: PropTypes.object,
261
230
  type: PropTypes.string,
231
+ handleLeftNavBarExpanded: PropTypes.func,
232
+ leftNavbarExpandedProp: PropTypes.bool,
262
233
  };
263
234
 
264
235
  export default injectIntl(NavigationBar);
@@ -62,4 +62,12 @@ export default defineMessages({
62
62
  defaultMessage:
63
63
  'There are no product settings. Organisation settings are available under profile on the right.',
64
64
  },
65
+ "selectOrganization": {
66
+ id: `${scope}.selectOrganization`,
67
+ defaultMessage: 'Select organization',
68
+ },
69
+ "loyaltyCreativeSettings": {
70
+ id: `${scope}.loyaltyCreativeSettings`,
71
+ defaultMessage: 'There are no settings for creatives within Loyalty+. Channel-related settings are available within organisation settings',
72
+ }
65
73
  });
@@ -0,0 +1,9 @@
1
+ export const CapLeftNavigationCss = {
2
+ 'width': '75.770rem',
3
+ 'margin-left': 'calc((100vw - 70.063rem)/2 + 1.6rem)',
4
+ };
5
+
6
+ export const CapLeftNavigatioOpenCss = {
7
+ 'width': '71.063rem',
8
+ 'margin-left': 'calc((100vw - 70.063rem)/2 + 8rem)',
9
+ };
@@ -7,19 +7,27 @@ import { render, screen } from '../../../utils/test-utils';
7
7
 
8
8
  import { NavigationBar } from '../index';
9
9
  import * as mockdata from './mockData';
10
-
10
+ import { Provider } from 'react-redux';
11
+ import { configureStore } from '@capillarytech/vulcan-react-sdk/utils';
12
+ import { createBrowserHistory } from 'history';
13
+ import { initialReducer } from '../../../initialReducer';
11
14
  const { userData } = mockdata;
12
15
 
16
+ let store;
17
+ let browserHistory = createBrowserHistory();
18
+ beforeAll(() => {
19
+ store = configureStore({}, initialReducer, browserHistory);
20
+ });
13
21
  const ComponentToRender = injectIntl(NavigationBar);
14
-
15
22
  const renderComponent = (props) => {
16
23
  render(
17
- <Router>
18
- <ComponentToRender {...props} />
19
- </Router>,
24
+ <Provider store={store}>
25
+ <Router>
26
+ <ComponentToRender {...props} />
27
+ </Router>
28
+ </Provider>
20
29
  );
21
30
  };
22
-
23
31
  describe('NavigationBar', () => {
24
32
  const props = {
25
33
  topbarMenuData: [{}],
@@ -37,7 +45,7 @@ describe('NavigationBar', () => {
37
45
 
38
46
  it('Show aria documentation bot icon if showDocumentationBot is true', () => {
39
47
  renderComponent(props);
40
- const ariaBotIcon = screen.getByLabelText('aria bot icon');
48
+ const ariaBotIcon = screen.getByLabelText('open-aira');
41
49
  expect(ariaBotIcon).toBeInTheDocument();
42
50
  });
43
51
 
@@ -45,7 +53,22 @@ describe('NavigationBar', () => {
45
53
  const updatedProps = cloneDeep(props);
46
54
  delete updatedProps.userData.currentOrgDetails.accessibleFeatures;
47
55
  renderComponent(updatedProps);
48
- const ariaBotIcon = screen.queryByLabelText('aria bot icon');
49
- expect(ariaBotIcon).toBeNull();
56
+ const ariaBotIcon = screen.queryByLabelText('open-aira');
57
+ expect(ariaBotIcon).toBeInTheDocument();
58
+ });
59
+
60
+ it('Should contains top vertical', () => {
61
+ const updatedProps = {...props} ;
62
+ delete updatedProps.userData.currentOrgDetails.accessibleFeatures;
63
+ renderComponent(updatedProps);
64
+ const topVaerticalBar = document.querySelector('.cap-top-bar-vertical');
65
+ expect(topVaerticalBar).toBeInTheDocument();
66
+ });
67
+ it('Should have loyalty product selected', () => {
68
+ const updatedProps = {...props};
69
+ updatedProps.location.pathname = '/creatives/ui/v2/loyalty';
70
+ renderComponent(updatedProps);
71
+ const loyaltyProduct = screen.getByText('Loyalty+');
72
+ expect(loyaltyProduct).toBeInTheDocument();
50
73
  });
51
74
  });
@@ -34,3 +34,4 @@ export const userData = {
34
34
  accessibleFeatures: ['ENABLE_AI_SUGGESTIONS'],
35
35
  },
36
36
  };
37
+
@@ -2,9 +2,10 @@ import React from "react";
2
2
  import { injectIntl } from 'react-intl';
3
3
  import '@testing-library/jest-dom';
4
4
  import { Provider } from 'react-redux';
5
- import { browserHistory } from 'react-router';
5
+ import { createBrowserHistory } from 'history';
6
+ import { configureStore } from '@capillarytech/vulcan-react-sdk/utils';
7
+ import { initialReducer } from "../../../initialReducer";
6
8
  import NewCallTask from '../index';
7
- import configureStore from '../../../store';
8
9
  import mockData from './mockData'
9
10
  import {
10
11
  render,
@@ -13,7 +14,8 @@ import { Router } from "express";
13
14
  const ComponentToRender = injectIntl(NewCallTask);
14
15
 
15
16
  const renderComponent = (props) => {
16
- const store = configureStore({}, browserHistory);
17
+ let browserHistory = createBrowserHistory();
18
+ const store = configureStore({}, initialReducer, browserHistory);
17
19
  return render(
18
20
  <Router>
19
21
  <Provider store={store}>
@@ -13,7 +13,7 @@ class Pagination extends React.Component { // eslint-disable-line react/prefer-s
13
13
 
14
14
  handleScroll = (e) => {
15
15
  const offset = 50;
16
- if ((e.target.scrollHeight - e.target.scrollTop) - offset <= e.target.clientHeight) {
16
+ if ((e.target.scrollHeight - e.target.scrollTop) - offset <= e.target.clientHeight && !this.props.templateInProgress) {
17
17
  this.props.onPageChange();
18
18
  }
19
19
  };
@@ -31,6 +31,7 @@ Pagination.propTypes = {
31
31
  children: PropTypes.element,
32
32
  onPageChange: PropTypes.func,
33
33
  style: PropTypes.object,
34
+ templateInProgress: PropTypes.bool,
34
35
  };
35
36
 
36
37
  Pagination.defaultProps = {
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { Route } from 'react-router-dom';
3
+
4
+ const RenderRoute = ({ Component: ComponentToRender, ...rest }) => (
5
+ <Route
6
+ {...rest}
7
+ render={props => <ComponentToRender {...props} />}
8
+ />
9
+ );
10
+
11
+ export default RenderRoute;
@@ -0,0 +1 @@
1
+ export { default } from './RenderRoute';