@capillarytech/creatives-library 8.0.136-alpha.4 → 8.0.136-beta.3

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 (292) hide show
  1. package/components/BreadCrumbs/index.js +65 -0
  2. package/components/BreadCrumbs/messages.js +13 -0
  3. package/components/CapTagList/index.js +235 -0
  4. package/components/CapTagList/messages.js +45 -0
  5. package/components/Card/_customCard.scss +40 -0
  6. package/components/Card/index.js +78 -0
  7. package/components/Card/tests/__snapshots__/index.test.js.snap +22 -0
  8. package/components/Card/tests/index.test.js +20 -0
  9. package/components/CardGrid/index.js +71 -0
  10. package/components/Ckeditor/index.js +238 -0
  11. package/components/Ckeditor/messages.js +13 -0
  12. package/components/Ckeditor/style.scss +3 -0
  13. package/components/Component/index.js +29 -0
  14. package/components/CustomPopOver/index.js +81 -0
  15. package/components/CustomPopOver/messages.js +17 -0
  16. package/components/DateFilter/index.js +349 -0
  17. package/components/DateFilter/messages.js +57 -0
  18. package/components/DateRange/index.js +114 -0
  19. package/components/DateRange/messages.js +25 -0
  20. package/components/Edmeditor/index.js +65 -0
  21. package/components/Edmeditor/messages.js +13 -0
  22. package/components/EmailPreview/_emailPreview.scss +119 -0
  23. package/components/EmailPreview/assets/images/iPad.svg +10 -0
  24. package/components/EmailPreview/assets/images/mobile.png +0 -0
  25. package/components/EmailPreview/index.js +107 -0
  26. package/components/EmailPreview/messages.js +33 -0
  27. package/components/Footer/index.js +27 -0
  28. package/components/Footer/messages.js +13 -0
  29. package/components/FormBuilder/_formBuilder.scss +83 -0
  30. package/components/FormBuilder/index.js +3279 -0
  31. package/components/FormBuilder/messages.js +61 -0
  32. package/components/Header/index.js +44 -0
  33. package/components/Header/messages.js +29 -0
  34. package/components/ImagePreview/_imagePreview.scss +63 -0
  35. package/components/ImagePreview/index.js +52 -0
  36. package/components/ImagePreview/messages.js +17 -0
  37. package/components/PageHeader/_pageHeader.scss +22 -0
  38. package/components/PageHeader/index.js +37 -0
  39. package/components/PageHeader/messages.js +13 -0
  40. package/components/Pagination/_pagination.scss +5 -0
  41. package/components/Pagination/index.js +49 -0
  42. package/components/PreviewSideBar/_previewsidebar.scss +28 -0
  43. package/components/PreviewSideBar/index.js +152 -0
  44. package/components/PreviewSideBar/messages.js +41 -0
  45. package/components/Sidebar/_sidebar.scss +115 -0
  46. package/components/Sidebar/index.js +214 -0
  47. package/components/Sidebar/messages.js +21 -0
  48. package/components/SlideBox/_slideBox.scss +63 -0
  49. package/components/SlideBox/index.js +47 -0
  50. package/components/SlideBox/tests/index.test.js +103 -0
  51. package/components/SmsEditor/index.js +55 -0
  52. package/components/SmsTest/index.js +117 -0
  53. package/components/SmsTest/messages.js +21 -0
  54. package/components/TemplatePreview/WechatRichmediaTemplatePreview/_wechatRichmediaTemplatePrev.scss +42 -0
  55. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +141 -0
  56. package/components/TemplatePreview/WechatRichmediaTemplatePreview/messages.js +21 -0
  57. package/components/TemplatePreview/_templatePreview.scss +642 -0
  58. package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
  59. package/components/TemplatePreview/assets/images/androidPushMessage.svg +45 -0
  60. package/components/TemplatePreview/assets/images/home-screen-android.svg +21 -0
  61. package/components/TemplatePreview/assets/images/home-screen-ios.svg +16 -0
  62. package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +135 -0
  63. package/components/TemplatePreview/assets/images/mobile.svg +24 -0
  64. package/components/TemplatePreview/assets/images/sms-body.png +0 -0
  65. package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
  66. package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
  67. package/components/TemplatePreview/assets/images/sms_mobile_android.svg +22 -0
  68. package/components/TemplatePreview/assets/images/sms_mobile_ios.svg +16 -0
  69. package/components/TemplatePreview/assets/images/user-icon.svg +19 -0
  70. package/components/TemplatePreview/assets/images/wechat-mobile.svg +78 -0
  71. package/components/TemplatePreview/assets/images/wechat_mobile_android.svg +20 -0
  72. package/components/TemplatePreview/index.js +617 -0
  73. package/components/TemplatePreview/messages.js +78 -0
  74. package/components/Toastr/index.js +60 -0
  75. package/components/Toastr/messages.js +13 -0
  76. package/components/ToastrMessage/index.js +113 -0
  77. package/components/ToastrMessage/messages.js +17 -0
  78. package/components/TopBar/_topbar.scss +46 -0
  79. package/components/TopBar/assets/images/capillary_logo.png +0 -0
  80. package/components/TopBar/assets/images/old_capillary_logo.png +0 -0
  81. package/components/TopBar/index.js +113 -0
  82. package/components/TopBar/messages.js +29 -0
  83. package/containers/App/actions.js +7 -0
  84. package/containers/App/constants.js +114 -0
  85. package/containers/App/index.js +52 -0
  86. package/containers/App/reducer.js +19 -0
  87. package/containers/App/sagas.js +31 -0
  88. package/containers/App/selectors.js +25 -0
  89. package/containers/App/test/saga.test.js +11 -0
  90. package/containers/Assets/Gallery/_gallery.scss +126 -0
  91. package/containers/Assets/Gallery/actions.js +37 -0
  92. package/containers/Assets/Gallery/constants.js +23 -0
  93. package/containers/Assets/Gallery/index.js +473 -0
  94. package/containers/Assets/Gallery/messages.js +93 -0
  95. package/containers/Assets/Gallery/reducer.js +81 -0
  96. package/containers/Assets/Gallery/sagas.js +80 -0
  97. package/containers/Assets/Gallery/selectors.js +25 -0
  98. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +9 -0
  99. package/containers/Assets/Gallery/tests/actions.test.js +25 -0
  100. package/containers/Assets/Gallery/tests/reducer.test.js +96 -0
  101. package/containers/Assets/Gallery/tests/saga.test.js +157 -0
  102. package/containers/Cap/actions.js +66 -0
  103. package/containers/Cap/constants.js +25 -0
  104. package/containers/Cap/index.js +402 -0
  105. package/containers/Cap/messages.js +75 -0
  106. package/containers/Cap/reducer.js +113 -0
  107. package/containers/Cap/sagas.js +159 -0
  108. package/containers/Cap/selectors.js +75 -0
  109. package/containers/Cap/tests/__snapshots__/index.test.js.snap +2269 -0
  110. package/containers/Cap/tests/index.test.js +22 -0
  111. package/containers/Cap/tests/saga.test.js +284 -0
  112. package/containers/Dashboard/actions.js +15 -0
  113. package/containers/Dashboard/constants.js +7 -0
  114. package/containers/Dashboard/index.js +76 -0
  115. package/containers/Dashboard/messages.js +13 -0
  116. package/containers/Dashboard/reducer.js +21 -0
  117. package/containers/Dashboard/sagas.js +17 -0
  118. package/containers/Dashboard/selectors.js +25 -0
  119. package/containers/Dashboard/test/saga.test.js +9 -0
  120. package/containers/Ebill/_ebill.scss +5 -0
  121. package/containers/Ebill/actions.js +43 -0
  122. package/containers/Ebill/constants.js +20 -0
  123. package/containers/Ebill/index.js +1278 -0
  124. package/containers/Ebill/messages.js +77 -0
  125. package/containers/Ebill/reducer.js +72 -0
  126. package/containers/Ebill/sagas.js +74 -0
  127. package/containers/Ebill/selectors.js +25 -0
  128. package/containers/Ebill/test/saga.test.js +11 -0
  129. package/containers/Email/_email.scss +141 -0
  130. package/containers/Email/actions.js +81 -0
  131. package/containers/Email/constants.js +36 -0
  132. package/containers/Email/index.js +3325 -0
  133. package/containers/Email/messages.js +289 -0
  134. package/containers/Email/reducer.js +142 -0
  135. package/containers/Email/sagas.js +135 -0
  136. package/containers/Email/selectors.js +31 -0
  137. package/containers/Email/test/saga.test.js +671 -0
  138. package/containers/LanguageProvider/actions.js +17 -0
  139. package/containers/LanguageProvider/constants.js +8 -0
  140. package/containers/LanguageProvider/index.js +80 -0
  141. package/containers/LanguageProvider/reducer.js +30 -0
  142. package/containers/LanguageProvider/selectors.js +20 -0
  143. package/containers/LanguageProvider/tests/actions.test.js +19 -0
  144. package/containers/LanguageProvider/tests/index.test.js +78 -0
  145. package/containers/LanguageProvider/tests/reducer.test.js +20 -0
  146. package/containers/LanguageProvider/tests/selectors.test.js +15 -0
  147. package/containers/Line/Create/_lineCreate.scss +54 -0
  148. package/containers/Line/Create/actions.js +90 -0
  149. package/containers/Line/Create/constants.js +39 -0
  150. package/containers/Line/Create/index.js +836 -0
  151. package/containers/Line/Create/messages.js +189 -0
  152. package/containers/Line/Create/reducer.js +99 -0
  153. package/containers/Line/Create/sagas.js +121 -0
  154. package/containers/Line/Create/selectors.js +36 -0
  155. package/containers/Line/Create/tests/saga.test.js +202 -0
  156. package/containers/Line/Edit/_lineEdit.scss +35 -0
  157. package/containers/Line/Edit/actions.js +79 -0
  158. package/containers/Line/Edit/constants.js +27 -0
  159. package/containers/Line/Edit/index.js +1050 -0
  160. package/containers/Line/Edit/messages.js +177 -0
  161. package/containers/Line/Edit/reducer.js +83 -0
  162. package/containers/Line/Edit/sagas.js +80 -0
  163. package/containers/Line/Edit/selectors.js +29 -0
  164. package/containers/Line/Edit/test/saga.test.js +160 -0
  165. package/containers/Login/assets/images/capillary_logo.png +0 -0
  166. package/containers/Login/components/LoginForm/index.js +62 -0
  167. package/containers/Login/components/LoginForm/messages.js +33 -0
  168. package/containers/Login/index.js +130 -0
  169. package/containers/Login/messages.js +25 -0
  170. package/containers/Login/selectors.js +25 -0
  171. package/containers/MobilePush/Create/_mobilePushCreate.scss +39 -0
  172. package/containers/MobilePush/Create/actions.js +46 -0
  173. package/containers/MobilePush/Create/constants.js +23 -0
  174. package/containers/MobilePush/Create/index.js +2303 -0
  175. package/containers/MobilePush/Create/messages.js +269 -0
  176. package/containers/MobilePush/Create/reducer.js +70 -0
  177. package/containers/MobilePush/Create/sagas.js +74 -0
  178. package/containers/MobilePush/Create/selectors.js +28 -0
  179. package/containers/MobilePush/Create/test/saga.test.js +19 -0
  180. package/containers/MobilePush/Edit/_mobilePushCreate.scss +39 -0
  181. package/containers/MobilePush/Edit/actions.js +91 -0
  182. package/containers/MobilePush/Edit/constants.js +35 -0
  183. package/containers/MobilePush/Edit/index.js +2601 -0
  184. package/containers/MobilePush/Edit/messages.js +266 -0
  185. package/containers/MobilePush/Edit/reducer.js +112 -0
  186. package/containers/MobilePush/Edit/sagas.js +126 -0
  187. package/containers/MobilePush/Edit/selectors.js +29 -0
  188. package/containers/MobilePush/Edit/tests/saga.test.js +255 -0
  189. package/containers/NotFoundPage/index.js +25 -0
  190. package/containers/NotFoundPage/messages.js +13 -0
  191. package/containers/NotFoundPage/tests/index.test.js +17 -0
  192. package/containers/Sms/Create/_smsCreate.scss +42 -0
  193. package/containers/Sms/Create/actions.js +27 -0
  194. package/containers/Sms/Create/constants.js +16 -0
  195. package/containers/Sms/Create/index.js +1488 -0
  196. package/containers/Sms/Create/messages.js +109 -0
  197. package/containers/Sms/Create/reducer.js +41 -0
  198. package/containers/Sms/Create/sagas.js +40 -0
  199. package/containers/Sms/Create/selectors.js +28 -0
  200. package/containers/Sms/Create/test/saga.test.js +11 -0
  201. package/containers/Sms/Edit/actions.js +40 -0
  202. package/containers/Sms/Edit/constants.js +17 -0
  203. package/containers/Sms/Edit/index.js +1472 -0
  204. package/containers/Sms/Edit/messages.js +105 -0
  205. package/containers/Sms/Edit/reducer.js +50 -0
  206. package/containers/Sms/Edit/sagas.js +60 -0
  207. package/containers/Sms/Edit/selectors.js +32 -0
  208. package/containers/Sms/Edit/test/saga.test.js +13 -0
  209. package/containers/TagList/_tagList.scss +8 -0
  210. package/containers/TagList/actions.js +15 -0
  211. package/containers/TagList/constants.js +32 -0
  212. package/containers/TagList/index.js +236 -0
  213. package/containers/TagList/messages.js +13 -0
  214. package/containers/TagList/reducer.js +23 -0
  215. package/containers/TagList/sagas.js +11 -0
  216. package/containers/TagList/selectors.js +25 -0
  217. package/containers/Templates/_templates.scss +333 -0
  218. package/containers/Templates/actions.js +103 -0
  219. package/containers/Templates/constants.js +60 -0
  220. package/containers/Templates/index.js +1756 -0
  221. package/containers/Templates/messages.js +337 -0
  222. package/containers/Templates/reducer.js +142 -0
  223. package/containers/Templates/sagas.js +163 -0
  224. package/containers/Templates/selectors.js +28 -0
  225. package/containers/Templates/test/saga.test.js +241 -0
  226. package/containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
  227. package/containers/WeChat/MapTemplates/actions.js +52 -0
  228. package/containers/WeChat/MapTemplates/constants.js +28 -0
  229. package/containers/WeChat/MapTemplates/index.js +1610 -0
  230. package/containers/WeChat/MapTemplates/messages.js +157 -0
  231. package/containers/WeChat/MapTemplates/reducer.js +74 -0
  232. package/containers/WeChat/MapTemplates/sagas.js +84 -0
  233. package/containers/WeChat/MapTemplates/selectors.js +25 -0
  234. package/containers/WeChat/MapTemplates/test/saga.test.js +155 -0
  235. package/containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +57 -0
  236. package/containers/WeChat/RichmediaTemplates/Create/actions.js +36 -0
  237. package/containers/WeChat/RichmediaTemplates/Create/constants.js +15 -0
  238. package/containers/WeChat/RichmediaTemplates/Create/index.js +1071 -0
  239. package/containers/WeChat/RichmediaTemplates/Create/messages.js +165 -0
  240. package/containers/WeChat/RichmediaTemplates/Create/reducer.js +60 -0
  241. package/containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +497 -0
  242. package/containers/WeChat/RichmediaTemplates/Create/sagas.js +51 -0
  243. package/containers/WeChat/RichmediaTemplates/Create/selectors.js +37 -0
  244. package/containers/WeChat/RichmediaTemplates/Create/test/saga.test.js +13 -0
  245. package/containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
  246. package/containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
  247. package/containers/WeChat/RichmediaTemplates/Edit/index.js +136 -0
  248. package/containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
  249. package/containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
  250. package/containers/WeChat/RichmediaTemplates/Edit/sagas.js +36 -0
  251. package/containers/WeChat/RichmediaTemplates/Edit/selectors.js +30 -0
  252. package/containers/WeChat/RichmediaTemplates/Edit/test/saga.test.js +12 -0
  253. package/containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
  254. package/containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
  255. package/containers/WeChat/RichmediaTemplates/View/index.js +47 -0
  256. package/containers/WeChat/RichmediaTemplates/View/messages.js +21 -0
  257. package/containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
  258. package/containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
  259. package/containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
  260. package/index.js +2 -4
  261. package/package.json +1 -1
  262. package/routes.js +202 -136
  263. package/services/getSchema.js +1 -1
  264. package/services/localStorageApi.js +0 -1
  265. package/tests/i18n.test.js +1 -1
  266. package/utils/asyncInjectors.js +78 -0
  267. package/utils/authWrapper.js +1 -1
  268. package/utils/callNativeEvent.js +16 -0
  269. package/utils/checkStore.js +21 -0
  270. package/utils/common.js +2 -2
  271. package/utils/customAuthWrapper.js +62 -0
  272. package/utils/customConnectedAuthWrapper.js +26 -0
  273. package/utils/tagValidations.js +1 -1
  274. package/utils/tests/checkStore.test.js +1 -1
  275. package/utils/tests/customAuth.test.js +1 -1
  276. package/utils/transformerUtils.js +195 -1
  277. package/v2Components/CapTagList/index.js +14 -9
  278. package/v2Components/Carousel/style.scss +1 -1
  279. package/v2Components/EmailMobilePreview/index.js +2 -2
  280. package/v2Components/FormBuilder/index.js +2 -2
  281. package/v2Components/TemplatePreview/index.js +1 -2
  282. package/v2Containers/Cap/tests/saga.test.js +1 -1
  283. package/v2Containers/Email/index.js +1 -1
  284. package/v2Containers/FTP/index.js +1 -1
  285. package/v2Containers/Line/Container/Text/index.js +6 -6
  286. package/v2Containers/Sms/Create/index.js +2 -2
  287. package/v2Containers/Sms/Edit/index.js +1 -1
  288. package/v2Containers/TagList/index.js +1 -1
  289. package/v2Containers/TagList/utils.js +1 -1
  290. package/v2Containers/Templates/index.js +1 -1
  291. package/v2Containers/Templates/sagas.js +1 -1
  292. package/constants/unified.js +0 -189
@@ -0,0 +1,105 @@
1
+ /*
2
+ * Edit Messages
3
+ *
4
+ * This contains all the text for the Edit component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ "saveTemplateLoader": {
10
+ id: 'creatives.containers.Edit.saveTemplateLoader',
11
+ defaultMessage: 'Saving template...',
12
+ },
13
+ "getTemplateDetailsLoader": {
14
+ id: 'creatives.containers.Edit.getTemplateDetailsLoader',
15
+ defaultMessage: 'Getting template details...',
16
+ },
17
+ "Message": {
18
+ id: 'creatives.containers.Edit.messageLabel',
19
+ defaultMessage: 'Message',
20
+ },
21
+ "Template name cannot be empty.": {
22
+ id: 'creatives.containers.Edit.emptyTemplateErrorMessage',
23
+ defaultMessage: "Please provide a template name",
24
+ },
25
+ "Enter template name": {
26
+ id: 'creatives.containers.Edit.templateNamePlaceHolder',
27
+ defaultMessage: "Enter template name",
28
+ },
29
+ "Discard changes": {
30
+ id: 'creatives.containers.Edit.discardChangesButton',
31
+ defaultMessage: "Discard changes",
32
+ },
33
+ "Cancel": {
34
+ id: 'creatives.containers.Edit.cancelButton',
35
+ defaultMessage: "Cancel",
36
+ },
37
+ "Save": {
38
+ id: 'creatives.containers.Edit.saveButton',
39
+ defaultMessage: "Save",
40
+ },
41
+ "Version": {
42
+ id: 'creatives.containers.Edit.versionLabel',
43
+ defaultMessage: "Version",
44
+ },
45
+ "Mark as Final": {
46
+ id: 'creatives.containers.Edit.markFinalVersionLabel',
47
+ defaultMessage: "Mark as final",
48
+ },
49
+ "Duplicate": {
50
+ id: 'creatives.containers.Edit.duplicateLabel',
51
+ defaultMessage: "Duplicate",
52
+ },
53
+ "Rename": {
54
+ id: 'creatives.containers.Edit.renameLabel',
55
+ defaultMessage: "Rename",
56
+ },
57
+ "Delete": {
58
+ id: 'creatives.containers.Edit.deleteLabel',
59
+ defaultMessage: "Delete",
60
+ },
61
+ "Please check if you intend to use unicode characters.": {
62
+ id: 'creatives.containers.Edit.unicodeErrorMessage',
63
+ defaultMessage: "Please check this if you want to use Unicode characters",
64
+ },
65
+ "Allow Unicode characters": {
66
+ id: 'creatives.containers.Edit.unicodeLabel',
67
+ defaultMessage: "Allow unicode characters",
68
+ },
69
+ "Tags": {
70
+ id: 'creatives.containers.Edit.tagsLabel',
71
+ defaultMessage: "Tags",
72
+ },
73
+ "New Version": {
74
+ id: 'creatives.containers.Edit.newVersionLabel',
75
+ defaultMessage: "New version",
76
+ },
77
+ "Template content has unsupported/missing tags!": {
78
+ id: 'creatives.containers.Edit.tagsErrorMessage',
79
+ defaultMessage: 'Please check the message content for unsupported/missing tags',
80
+ },
81
+ "Please input sms template content.": {
82
+ id: 'creatives.containers.Edit.smsEditorPlaceholder',
83
+ defaultMessage: "Please enter the message content",
84
+ },
85
+ "somethingWentWrong": {
86
+ id: 'creatives.containers.Edit.somethingWentWrong',
87
+ defaultMessage: "Something went wrong!!",
88
+ },
89
+ "goBackConfirmation": {
90
+ id: 'creatives.containers.Edit.goBackConfirmation',
91
+ defaultMessage: "Going back will discard all the changes you've made. Continue?",
92
+ },
93
+ "alertMessage": {
94
+ id: 'creatives.containers.Edit.alertMessage',
95
+ defaultMessage: "Alert",
96
+ },
97
+ "deleteVersion": {
98
+ id: 'creatives.containers.Edit.deleteVersion',
99
+ defaultMessage: "Do you really want to delete this version?",
100
+ },
101
+ "templateMarkedFinal": {
102
+ id: 'creatives.containers.Edit.templateMarkedFinal',
103
+ defaultMessage: "Template Marked as Final Successfully",
104
+ },
105
+ });
@@ -0,0 +1,50 @@
1
+ /*
2
+ *
3
+ * Create reducer
4
+ *
5
+ */
6
+
7
+ import { fromJS } from 'immutable';
8
+ import * as types from './constants';
9
+
10
+ const initialState = fromJS({
11
+ editTemplateInProgress: false,
12
+ editResponse: {},
13
+ getTemplateDetailsInProgress: false,
14
+ templateDetails: {},
15
+ });
16
+
17
+ function editReducer(state = initialState, action) {
18
+ switch (action.type) {
19
+ case types.DEFAULT_ACTION:
20
+ return state;
21
+ case types.EDIT_TEMPLATE_REQUEST:
22
+ return state
23
+ .set('editTemplateInProgress', true)
24
+ .set('editTemplateError', false)
25
+ .set('editTemplateErrorMessage', fromJS(""));
26
+ case types.EDIT_TEMPLATE_SUCCESS:
27
+ return state.set('editTemplateInProgress', false)
28
+ .set('editResponse', action.data)
29
+ .set('editTemplateError', (action.statusCode !== undefined && action.statusCode > 300))
30
+ .set('editTemplateErrorMessage', fromJS(action.errorMsg));
31
+ case types.EDIT_TEMPLATE_FAILURE:
32
+ return state
33
+ .set('editTemplateInProgress', false)
34
+ .set('editTemplateError', true)
35
+ .set('editTemplateErrorMessage', fromJS(action.errorMsg));
36
+ case types.GET_TEMPLATE_DETAILS_REQUEST:
37
+ return state.set('getTemplateDetailsInProgress', true);
38
+ case types.GET_TEMPLATE_DETAILS_SUCCESS:
39
+ return state.set('getTemplateDetailsInProgress', false)
40
+ .set('templateDetails', action.data);
41
+ case types.GET_TEMPLATE_DETAILS_FAILURE:
42
+ return state.set('getTemplateDetailsInProgress', false);
43
+ case types.CLEAR_EDIT_RESPONSE_REQUEST:
44
+ return state.set('editResponse', {});
45
+ default:
46
+ return state;
47
+ }
48
+ }
49
+
50
+ export default editReducer;
@@ -0,0 +1,60 @@
1
+ import {
2
+ call, put, takeLatest, all,
3
+ } from 'redux-saga/effects';
4
+ // import { schema, normalize } from 'normalizr';
5
+ import * as Api from '../../../services/api';
6
+ import * as types from './constants';
7
+
8
+ // Individual exports for testing
9
+ export function* editTemplate(template) {
10
+ let errorMsg;
11
+ try {
12
+
13
+ const result = yield call(Api.editTemplate, template);
14
+
15
+ // const sidebar = result.response.sidebar;
16
+ if (result.message || result.status.code === 500) {
17
+ errorMsg = result.message;
18
+ }
19
+
20
+ yield put({ type: types.EDIT_TEMPLATE_SUCCESS, data: result.response, statusCode: result.status ? result.status.code : '', errorMsg });
21
+ } catch (error) {
22
+ yield put({ type: types.EDIT_TEMPLATE_FAILURE, error, errorMsg });
23
+ }
24
+ }
25
+
26
+ export function* getTemplateDetails(id) {
27
+ try {
28
+
29
+ const result = yield call(Api.getTemplateDetails, id);
30
+ // const sidebar = result.response.sidebar;
31
+ yield put({ type: types.GET_TEMPLATE_DETAILS_SUCCESS, data: result.response });
32
+ } catch (error) {
33
+ yield put({ type: types.GET_TEMPLATE_DETAILS_FAILURE, error });
34
+ }
35
+ }
36
+
37
+
38
+ function* watchEditTemplate() {
39
+ yield takeLatest(types.EDIT_TEMPLATE_REQUEST, editTemplate);
40
+
41
+
42
+ }
43
+
44
+ function* watchGetTemplateDetails() {
45
+ yield takeLatest(types.GET_TEMPLATE_DETAILS_REQUEST, getTemplateDetails);
46
+
47
+
48
+ }
49
+
50
+ // All sagas to be loaded
51
+ export default [
52
+ watchEditTemplate, watchGetTemplateDetails,
53
+ ];
54
+
55
+ export function* editSmsSaga() {
56
+ yield all([
57
+ watchEditTemplate(),
58
+ watchGetTemplateDetails(),
59
+ ]);
60
+ }
@@ -0,0 +1,32 @@
1
+ import { createSelector } from 'reselect';
2
+
3
+ /**
4
+ * Direct selector to the create state domain
5
+ */
6
+ const selectSmsEditDomain = () => (state) => state.get('edit');
7
+
8
+ /**
9
+ * Other specific selectors
10
+ */
11
+
12
+
13
+ /**
14
+ * Default selector used by Create
15
+ */
16
+
17
+ const makeSelectEdit = () => createSelector(
18
+ selectSmsEditDomain(),
19
+ (substate) => substate.toJS()
20
+ );
21
+
22
+ const makeSelectEditResponse = () => createSelector(
23
+ selectSmsEditDomain(), (dimensionState) => dimensionState.get('editResponse')
24
+ );
25
+
26
+ const makeSelectTemplateDetailsResponse = () => createSelector(
27
+ selectSmsEditDomain(), (dimensionState) => dimensionState.get('templateDetails')
28
+ );
29
+
30
+ export {
31
+ makeSelectEdit, makeSelectEditResponse, makeSelectTemplateDetailsResponse,
32
+ };
@@ -0,0 +1,13 @@
1
+ import { expectSaga } from "redux-saga-test-plan";
2
+
3
+ import {
4
+ editSmsSaga,
5
+ } from "../sagas";
6
+
7
+ describe("RichMedia Template Sagas", () => {
8
+ describe("editSmsSaga Combined", () => {
9
+ it.concurrent("should initialize all SMS-related watcher sagas without error", () => {
10
+ return expectSaga(editSmsSaga).run();
11
+ });
12
+ });
13
+ });
@@ -0,0 +1,8 @@
1
+ .ant-tree li span.ant-tree-switcher {
2
+ margin-left: 0 !important ;
3
+ }
4
+
5
+ .ant-tree{
6
+ max-height: 300px;
7
+ overflow-y: auto;
8
+ }
@@ -0,0 +1,15 @@
1
+ /*
2
+ *
3
+ * TagList actions
4
+ *
5
+ */
6
+
7
+ import {
8
+ DEFAULT_ACTION,
9
+ } from './constants';
10
+
11
+ export function defaultAction() {
12
+ return {
13
+ type: DEFAULT_ACTION,
14
+ };
15
+ }
@@ -0,0 +1,32 @@
1
+ /*
2
+ *
3
+ * TagList constants
4
+ *
5
+ */
6
+
7
+ export const DEFAULT_ACTION = 'app/TagList/DEFAULT_ACTION';
8
+
9
+ export const JAPANESE_HELP_TEXT = 'ヘルプ :トークンの定義';
10
+
11
+ export const TAG_TRANSLATION_DOC = 'https://docs.capillarytech.com/docs/tags-translation';
12
+
13
+ export const GET_TRANSLATION_MAPPED = {
14
+ 'en': 'en-US',
15
+ 'zh-cn': 'zh',
16
+ 'zh': 'zh',
17
+ 'en-US': 'en-US',
18
+ 'ja-JP': 'ja-JP',
19
+ };
20
+
21
+ export const JAPANESE_HIDE_DATE_TAGS = [
22
+ "mm/dd/yyyy",
23
+ "dd/mm/yyyy",
24
+ "mm/dd/yy",
25
+ "dd Mon yyyy",
26
+ "Day, Mon dd, yy",
27
+ "dd.mm.yy",
28
+ "dd Mon",
29
+ "dd/m/yyyy",
30
+ ];
31
+
32
+ export const STRING = "string";
@@ -0,0 +1,236 @@
1
+ /*
2
+ *
3
+ * TagList
4
+ *
5
+ */
6
+
7
+ import PropTypes from 'prop-types';
8
+
9
+ import React from 'react';
10
+ import { connect } from 'react-redux';
11
+ import { Tree } from 'antd';
12
+ import _ from 'lodash';
13
+ import { createStructuredSelector } from 'reselect';
14
+ import { bindActionCreators } from 'redux';
15
+ import makeSelectTagList from './selectors';
16
+ import { UserIsAuthenticated } from '../../utils/authWrapper';
17
+ import * as actions from './actions';
18
+ import * as globalActions from '../../containers/Cap/actions';
19
+ // import styled from styled-components;
20
+ import CapTagList from '../../components/CapTagList';
21
+ import './_tagList.scss';
22
+ const TreeNode = Tree.TreeNode;
23
+
24
+ export class TagList extends React.Component { // eslint-disable-line react/prefer-stateless-function
25
+ constructor(props) {
26
+ super(props);
27
+ this.state = {
28
+ loading: false,
29
+ };
30
+ this.renderTags = this.renderTags.bind(this);
31
+ this.populateTags = this.populateTags.bind(this);
32
+ this.populateTagForChildren = this.populateTagForChildren.bind(this);
33
+ this.transformInjectedTags = this.transformInjectedTags.bind(this);
34
+ }
35
+
36
+ componentDidMount() {
37
+
38
+ }
39
+
40
+ componentWillReceiveProps(nextProps) {
41
+ if (_.isEmpty(this.props.injectedTags) && _.isEmpty(this.props.tags)) {
42
+ this.setState({loading: true});
43
+ }
44
+ if (!_.isEqual(nextProps.injectedTags, this.props.injectedTags)) {
45
+
46
+ this.setState({loading: false});
47
+ }
48
+ if (!_.isEqual(nextProps.tags, this.props.tags)) {
49
+
50
+ this.setState({loading: false});
51
+ }
52
+ }
53
+
54
+ onSelect = (selectedKeys) => {
55
+ this.props.onTagSelect(selectedKeys[0]);
56
+ };
57
+
58
+ onClick = (e, data) => {
59
+
60
+ };
61
+
62
+ getTagsforContext = (data) => {
63
+ //this.setState({loading: true});
64
+ this.props.onContextChange(data);
65
+ }
66
+
67
+ populateTags(tagsList) {
68
+
69
+ const mainTags = {};
70
+
71
+ //Form tags object with tag headers
72
+ _.forEach(tagsList, (temp) => {
73
+ const tag = temp.definition;
74
+ if (!tag['tag-header']) {
75
+ mainTags[tag.value] = {
76
+ name: tag.label[this.props.userLocale] ? tag.label[this.props.userLocale] : tag.label.en,
77
+ desc: tag.desc ? tag.desc : tag.label.en,
78
+ };
79
+ } else if (tag['tag-header'] && mainTags[tag.value]) {
80
+ mainTags[tag.value].subtags = _.concat(mainTags[tag.value].subtags, tag.subtags);
81
+ } else if (!mainTags[tag.value]) {
82
+
83
+ mainTags[tag.value] = {
84
+ 'tag-header': true,
85
+ "name": tag.label[this.props.userLocale] ? tag.label[this.props.userLocale] : tag.label.en,
86
+ "desc": tag.desc ? tag.desc : tag.label.en,
87
+ "subtags": tag.subtags,
88
+ };
89
+ }
90
+ });
91
+
92
+ const mainTagsCloned = _.cloneDeep(mainTags);
93
+ //Insert subtags in tag headers and reomve them from top level
94
+ const result = {};
95
+ _.forEach(mainTagsCloned, (tag, key) => {
96
+ if (tag['tag-header']) {
97
+ const tagWithChildren = this.populateTagForChildren(tag, mainTagsCloned, key);
98
+ tagWithChildren.resolved = true;
99
+ result[key] = tagWithChildren;
100
+ } else {
101
+ result[key] = tag;
102
+ }
103
+ });
104
+
105
+ //Delete extra tag headers
106
+ _.forEach(result, (tag) => {
107
+ if (tag['tag-header']) {
108
+ _.forEach(tag.subtags, (subtag, key) => {
109
+ if (result[key]) {
110
+ result[key].deleted = true;
111
+ }
112
+ });
113
+ }
114
+ });
115
+ //Actually delete them
116
+ _.forEach(result, (tag, key) => {
117
+ if (tag.deleted) {
118
+ delete result[key];
119
+ }
120
+ });
121
+ return result;
122
+ }
123
+
124
+ populateTagForChildren(targetTag, tagsObject, tagValue) {
125
+ const tag = targetTag;
126
+ if (tag && tag['tag-header'] && !tag.resolved) {
127
+ const tempSubTags = {};
128
+ _.forEach(tag.subtags, (subtag) => {
129
+ if (tagsObject[subtag]) {
130
+ const children = this.populateTagForChildren(tagsObject[subtag], tagsObject, subtag);
131
+ children.resolved = true;
132
+ tempSubTags[subtag] = children;
133
+ }
134
+ });
135
+ tag.subtags = tempSubTags;
136
+ return tag;
137
+ }
138
+ return tagsObject[tagValue];
139
+ }
140
+
141
+ transformInjectedTags(tags) {
142
+ _.forEach(tags, (tag) => {
143
+ const temp = tag;
144
+ let subKey = '';
145
+ Object.keys(tag).map( (k) => {
146
+ if (k.indexOf("subtags") !== -1) {
147
+ subKey = k;
148
+ }
149
+ return true;
150
+ });
151
+ if (subKey !== '') {
152
+ temp['tag-header'] = true;
153
+ if (subKey !== 'subtags') {
154
+ temp.subtags = _.cloneDeep(temp[subKey]);
155
+ delete temp[subKey];
156
+ }
157
+ temp.subtags = this.transformInjectedTags(temp.subtags);
158
+ }
159
+ });
160
+ return tags;
161
+ }
162
+
163
+ renderTags(tags) {
164
+ const list = [];
165
+ _.forEach(tags, (val, key) => {
166
+ if (_.has(val, 'subtags')) {
167
+ const temp = this.renderTags(val.subtags);
168
+ list.push((
169
+ <TreeNode title={val.name} key={key}>
170
+ {temp}
171
+ </TreeNode>
172
+ ));
173
+ } else {
174
+ const tempNode = (<TreeNode title={val.name} key={key}></TreeNode>);
175
+ list.push(tempNode);
176
+ }
177
+ });
178
+ return list;
179
+ }
180
+
181
+ render() {
182
+ let tags = {};
183
+ let injectedTags = {};
184
+ if (this.props.injectedTags && !_.isEmpty(this.props.injectedTags)) {
185
+ injectedTags = this.transformInjectedTags(this.props.injectedTags);
186
+
187
+ }
188
+ if (this.props.tags && this.props.tags.length > 0) {
189
+ tags = this.populateTags(this.props.tags);
190
+
191
+ }
192
+ tags = _.merge( {}, tags, injectedTags);
193
+
194
+ return (
195
+ <div className={this.props.className ? this.props.className : ''}>
196
+ <CapTagList
197
+ loading={this.state.loading}
198
+ tags={tags}
199
+ onSelect={this.onSelect}
200
+ label={this.props.label}
201
+ onContextChange={this.getTagsforContext}
202
+ moduleFilterEnabled={this.props.moduleFilterEnabled}
203
+ />
204
+ </div>
205
+ );
206
+ }
207
+ }
208
+
209
+ TagList.defaultProps = {
210
+ isNewVersionFlow: false,
211
+ userLocale: 'en',
212
+ };
213
+
214
+ TagList.propTypes = {
215
+ onTagSelect: PropTypes.func,
216
+ tags: PropTypes.array,
217
+ injectedTags: PropTypes.object,
218
+ label: PropTypes.string,
219
+ onContextChange: PropTypes.func,
220
+ moduleFilterEnabled: PropTypes.bool,
221
+ className: PropTypes.string,
222
+ userLocale: PropTypes.string,
223
+ };
224
+
225
+ const mapStateToProps = createStructuredSelector({
226
+ TagList: makeSelectTagList(),
227
+ });
228
+
229
+ function mapDispatchToProps(dispatch) {
230
+ return {
231
+ actions: bindActionCreators(actions, dispatch),
232
+ globalActions: bindActionCreators(globalActions, dispatch),
233
+ };
234
+ }
235
+
236
+ export default UserIsAuthenticated(connect(mapStateToProps, mapDispatchToProps)(TagList));
@@ -0,0 +1,13 @@
1
+ /*
2
+ * TagList Messages
3
+ *
4
+ * This contains all the text for the TagList component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ header: {
10
+ id: 'creatives.containers.TagList.header',
11
+ defaultMessage: 'This is TagList container !',
12
+ },
13
+ });
@@ -0,0 +1,23 @@
1
+ /*
2
+ *
3
+ * TagList reducer
4
+ *
5
+ */
6
+
7
+ import { fromJS } from 'immutable';
8
+ import {
9
+ DEFAULT_ACTION,
10
+ } from './constants';
11
+
12
+ const initialState = fromJS({});
13
+
14
+ function tagListReducer(state = initialState, action) {
15
+ switch (action.type) {
16
+ case DEFAULT_ACTION:
17
+ return state;
18
+ default:
19
+ return state;
20
+ }
21
+ }
22
+
23
+ export default tagListReducer;
@@ -0,0 +1,11 @@
1
+ // import { take, call, put, select } from 'redux-saga/effects';
2
+
3
+ // Individual exports for testing
4
+ export function* defaultSaga() {
5
+ // See example in containers/HomePage/sagas.js
6
+ }
7
+
8
+ // All sagas to be loaded
9
+ export default [
10
+ defaultSaga,
11
+ ];
@@ -0,0 +1,25 @@
1
+ import { createSelector } from 'reselect';
2
+
3
+ /**
4
+ * Direct selector to the tagList state domain
5
+ */
6
+ const selectTagListDomain = () => (state) => state.get('tagList');
7
+
8
+ /**
9
+ * Other specific selectors
10
+ */
11
+
12
+
13
+ /**
14
+ * Default selector used by TagList
15
+ */
16
+
17
+ const makeSelectTagList = () => createSelector(
18
+ selectTagListDomain(),
19
+ (substate) => substate.toJS()
20
+ );
21
+
22
+ export default makeSelectTagList;
23
+ export {
24
+ selectTagListDomain,
25
+ };