@capillarytech/creatives-library 2.0.69 → 2.0.71

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 (391) hide show
  1. package/app.js +1 -1
  2. package/components/Ckeditor/index.js +2 -1
  3. package/components/FormBuilder/index.js +25 -10
  4. package/components/Header/index.js +3 -1
  5. package/components/TemplatePreview/WechatRichmediaTemplatePreview/index.js +38 -3
  6. package/components/TemplatePreview/index.js +45 -51
  7. package/components/TemplatePreview/messages.js +1 -1
  8. package/containers/Cap/actions.js +0 -5
  9. package/containers/Cap/reducer.js +1 -1
  10. package/containers/Cap/selectors.js +0 -13
  11. package/containers/Ebill/index.js +1 -2
  12. package/containers/Email/_email.scss +1 -0
  13. package/containers/Email/actions.js +3 -8
  14. package/containers/Email/constants.js +0 -1
  15. package/containers/Email/index.js +947 -322
  16. package/containers/Email/reducer.js +0 -3
  17. package/containers/Email/sagas.js +6 -3
  18. package/containers/Email/selectors.js +1 -4
  19. package/containers/Line/Create/index.js +1 -2
  20. package/containers/Line/Edit/_lineEdit.scss +4 -0
  21. package/containers/Line/Edit/index.js +1 -3
  22. package/containers/MobilePush/Create/_mobilePushCreate.scss +3 -12
  23. package/containers/MobilePush/Create/actions.js +0 -6
  24. package/containers/MobilePush/Create/constants.js +0 -1
  25. package/containers/MobilePush/Create/index.js +1133 -628
  26. package/containers/MobilePush/Create/messages.js +1 -5
  27. package/containers/MobilePush/Create/reducer.js +0 -2
  28. package/containers/MobilePush/Create/selectors.js +3 -3
  29. package/containers/MobilePush/Edit/_mobilePushCreate.scss +3 -9
  30. package/containers/MobilePush/Edit/index.js +1127 -393
  31. package/containers/MobilePush/Edit/messages.js +0 -4
  32. package/containers/MobilePush/Edit/reducer.js +1 -2
  33. package/containers/MobilePush/Edit/selectors.js +3 -6
  34. package/containers/Sms/Create/_smsCreate.scss +2 -1
  35. package/containers/Sms/Create/actions.js +4 -4
  36. package/containers/Sms/Create/index.js +570 -102
  37. package/containers/Sms/Create/sagas.js +2 -1
  38. package/containers/Sms/Edit/actions.js +5 -10
  39. package/containers/Sms/Edit/constants.js +0 -1
  40. package/containers/Sms/Edit/index.js +548 -103
  41. package/containers/Sms/Edit/reducer.js +0 -2
  42. package/containers/Sms/Edit/sagas.js +3 -1
  43. package/containers/TagList/index.js +3 -3
  44. package/containers/Templates/actions.js +1 -3
  45. package/containers/Templates/index.js +299 -268
  46. package/containers/Templates/messages.js +90 -122
  47. package/containers/Templates/reducer.js +3 -3
  48. package/containers/Templates/sagas.js +1 -5
  49. package/containers/Templates/selectors.js +1 -41
  50. package/containers/WeChat/MapTemplates/index.js +3 -4
  51. package/containers/WeChat/RichmediaTemplates/Create/index.js +18 -4
  52. package/containers/WeChat/RichmediaTemplates/Create/messages.js +4 -0
  53. package/containers/WeChat/RichmediaTemplates/Edit/index.js +3 -1
  54. package/containers/WeChat/RichmediaTemplates/View/index.js +3 -1
  55. package/index.js +31 -31
  56. package/initialState.js +6 -0
  57. package/package.json +3 -3
  58. package/routes.js +24 -19
  59. package/services/api.js +6 -2
  60. package/services/getSchema.js +18 -0
  61. package/v2Containers/App/actions.js +7 -0
  62. package/v2Containers/App/constants.js +3 -0
  63. package/v2Containers/App/reducer.js +19 -0
  64. package/v2Containers/App/sagas.js +26 -0
  65. package/v2Containers/App/selectors.js +25 -0
  66. package/v2Containers/App/tests/actions.test.js +18 -0
  67. package/v2Containers/App/tests/reducer.test.js +9 -0
  68. package/v2Containers/App/tests/sagas.test.js +15 -0
  69. package/v2Containers/App/tests/selectors.test.js +10 -0
  70. package/v2Containers/Assets/Gallery/_gallery.scss +0 -0
  71. package/v2Containers/Assets/Gallery/actions.js +37 -0
  72. package/v2Containers/Assets/Gallery/constants.js +23 -0
  73. package/v2Containers/Assets/Gallery/index.js +479 -0
  74. package/v2Containers/Assets/Gallery/messages.js +97 -0
  75. package/v2Containers/Assets/Gallery/reducer.js +81 -0
  76. package/v2Containers/Assets/Gallery/sagas.js +84 -0
  77. package/v2Containers/Assets/Gallery/selectors.js +25 -0
  78. package/v2Containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +7 -0
  79. package/v2Containers/Assets/Gallery/tests/actions.test.js +26 -0
  80. package/v2Containers/Assets/Gallery/tests/index.test.js +10 -0
  81. package/v2Containers/Assets/Gallery/tests/reducer.test.js +95 -0
  82. package/v2Containers/Assets/Gallery/tests/sagas.test.js +15 -0
  83. package/v2Containers/Assets/Gallery/tests/selectors.test.js +10 -0
  84. package/v2Containers/CallTask/_callTask.scss +5 -0
  85. package/v2Containers/CallTask/actions.js +15 -0
  86. package/v2Containers/CallTask/constants.js +7 -0
  87. package/v2Containers/CallTask/index.js +141 -0
  88. package/v2Containers/CallTask/messages.js +21 -0
  89. package/v2Containers/CallTask/reducer.js +23 -0
  90. package/v2Containers/CallTask/sagas.js +11 -0
  91. package/v2Containers/CallTask/selectors.js +25 -0
  92. package/v2Containers/CallTask/tests/actions.test.js +18 -0
  93. package/v2Containers/CallTask/tests/index.test.js +10 -0
  94. package/v2Containers/CallTask/tests/reducer.test.js +9 -0
  95. package/v2Containers/CallTask/tests/sagas.test.js +15 -0
  96. package/v2Containers/CallTask/tests/selectors.test.js +10 -0
  97. package/v2Containers/Cap/actions.js +64 -0
  98. package/v2Containers/Cap/constants.js +24 -0
  99. package/v2Containers/Cap/index.js +349 -0
  100. package/v2Containers/Cap/messsages.js +63 -0
  101. package/v2Containers/Cap/reducer.js +111 -0
  102. package/v2Containers/Cap/sagas.js +143 -0
  103. package/v2Containers/Cap/selectors.js +85 -0
  104. package/v2Containers/Cap/tests/index.test.js +16 -0
  105. package/v2Containers/Cap/tests/selectors.test.js +28 -0
  106. package/v2Containers/ChannelTemplates/actions.js +20 -0
  107. package/v2Containers/ChannelTemplates/constants.js +8 -0
  108. package/v2Containers/ChannelTemplates/index.js +48 -0
  109. package/v2Containers/ChannelTemplates/messages.js +13 -0
  110. package/v2Containers/ChannelTemplates/reducer.js +34 -0
  111. package/v2Containers/ChannelTemplates/sagas.js +32 -0
  112. package/v2Containers/ChannelTemplates/selectors.js +25 -0
  113. package/v2Containers/ChannelTemplates/tests/actions.test.js +18 -0
  114. package/v2Containers/ChannelTemplates/tests/index.test.js +10 -0
  115. package/v2Containers/ChannelTemplates/tests/reducer.test.js +9 -0
  116. package/v2Containers/ChannelTemplates/tests/sagas.test.js +15 -0
  117. package/v2Containers/ChannelTemplates/tests/selectors.test.js +10 -0
  118. package/v2Containers/CreativesContainer/SlideBoxContent.js +257 -0
  119. package/v2Containers/CreativesContainer/SlideBoxFooter.js +45 -0
  120. package/v2Containers/CreativesContainer/SlideBoxHeader.js +70 -0
  121. package/v2Containers/CreativesContainer/actions.js +27 -0
  122. package/v2Containers/CreativesContainer/constants.js +16 -0
  123. package/v2Containers/CreativesContainer/index.js +483 -0
  124. package/v2Containers/CreativesContainer/index.scss +27 -0
  125. package/v2Containers/CreativesContainer/messages.js +293 -0
  126. package/v2Containers/CreativesContainer/reducer.js +29 -0
  127. package/v2Containers/CreativesContainer/sagas.js +11 -0
  128. package/v2Containers/CreativesContainer/selectors.js +30 -0
  129. package/v2Containers/CreativesContainer/tests/actions.test.js +18 -0
  130. package/v2Containers/CreativesContainer/tests/index.test.js +10 -0
  131. package/v2Containers/CreativesContainer/tests/reducer.test.js +9 -0
  132. package/v2Containers/CreativesContainer/tests/sagas.test.js +15 -0
  133. package/v2Containers/CreativesContainer/tests/selectors.test.js +10 -0
  134. package/v2Containers/Dashboard/actions.js +15 -0
  135. package/v2Containers/Dashboard/constants.js +7 -0
  136. package/v2Containers/Dashboard/index.js +54 -0
  137. package/v2Containers/Dashboard/messages.js +13 -0
  138. package/v2Containers/Dashboard/reducer.js +21 -0
  139. package/v2Containers/Dashboard/sagas.js +11 -0
  140. package/v2Containers/Dashboard/selectors.js +25 -0
  141. package/v2Containers/Dashboard/tests/actions.test.js +18 -0
  142. package/v2Containers/Dashboard/tests/index.test.js +10 -0
  143. package/v2Containers/Dashboard/tests/reducer.test.js +9 -0
  144. package/v2Containers/Dashboard/tests/sagas.test.js +15 -0
  145. package/v2Containers/Dashboard/tests/selectors.test.js +10 -0
  146. package/v2Containers/Ebill/_ebill.scss +5 -0
  147. package/v2Containers/Ebill/actions.js +43 -0
  148. package/v2Containers/Ebill/constants.js +20 -0
  149. package/v2Containers/Ebill/index.js +1261 -0
  150. package/v2Containers/Ebill/messages.js +73 -0
  151. package/v2Containers/Ebill/reducer.js +72 -0
  152. package/v2Containers/Ebill/sagas.js +65 -0
  153. package/v2Containers/Ebill/selectors.js +25 -0
  154. package/v2Containers/Ebill/tests/actions.test.js +18 -0
  155. package/v2Containers/Ebill/tests/index.test.js +10 -0
  156. package/v2Containers/Ebill/tests/reducer.test.js +9 -0
  157. package/v2Containers/Ebill/tests/sagas.test.js +15 -0
  158. package/v2Containers/Ebill/tests/selectors.test.js +10 -0
  159. package/v2Containers/Email/_email.scss +140 -0
  160. package/v2Containers/Email/actions.js +86 -0
  161. package/v2Containers/Email/constants.js +37 -0
  162. package/v2Containers/Email/index.js +2703 -0
  163. package/v2Containers/Email/initialSchema.js +540 -0
  164. package/v2Containers/Email/messages.js +237 -0
  165. package/v2Containers/Email/reducer.js +147 -0
  166. package/v2Containers/Email/sagas.js +133 -0
  167. package/v2Containers/Email/selectors.js +34 -0
  168. package/v2Containers/Email/tests/actions.test.js +18 -0
  169. package/v2Containers/Email/tests/index.test.js +10 -0
  170. package/v2Containers/Email/tests/reducer.test.js +9 -0
  171. package/v2Containers/Email/tests/sagas.test.js +15 -0
  172. package/v2Containers/Email/tests/selectors.test.js +10 -0
  173. package/v2Containers/EmailWrapper/actions.js +15 -0
  174. package/v2Containers/EmailWrapper/constants.js +7 -0
  175. package/v2Containers/EmailWrapper/index.js +258 -0
  176. package/v2Containers/EmailWrapper/messages.js +57 -0
  177. package/v2Containers/EmailWrapper/reducer.js +23 -0
  178. package/v2Containers/EmailWrapper/sagas.js +11 -0
  179. package/v2Containers/EmailWrapper/selectors.js +25 -0
  180. package/v2Containers/EmailWrapper/tests/actions.test.js +18 -0
  181. package/v2Containers/EmailWrapper/tests/index.test.js +10 -0
  182. package/v2Containers/EmailWrapper/tests/reducer.test.js +9 -0
  183. package/v2Containers/EmailWrapper/tests/sagas.test.js +15 -0
  184. package/v2Containers/EmailWrapper/tests/selectors.test.js +10 -0
  185. package/v2Containers/LanguageProvider/actions.js +17 -0
  186. package/v2Containers/LanguageProvider/constants.js +8 -0
  187. package/v2Containers/LanguageProvider/index.js +46 -0
  188. package/v2Containers/LanguageProvider/reducer.js +30 -0
  189. package/v2Containers/LanguageProvider/selectors.js +20 -0
  190. package/v2Containers/LanguageProvider/tests/actions.test.js +19 -0
  191. package/v2Containers/LanguageProvider/tests/index.test.js +49 -0
  192. package/v2Containers/LanguageProvider/tests/reducer.test.js +20 -0
  193. package/v2Containers/LanguageProvider/tests/selectors.test.js +15 -0
  194. package/v2Containers/Line/Create/_lineCreate.scss +43 -0
  195. package/v2Containers/Line/Create/actions.js +90 -0
  196. package/v2Containers/Line/Create/constants.js +39 -0
  197. package/v2Containers/Line/Create/index.js +822 -0
  198. package/v2Containers/Line/Create/messages.js +173 -0
  199. package/v2Containers/Line/Create/reducer.js +99 -0
  200. package/v2Containers/Line/Create/sagas.js +107 -0
  201. package/v2Containers/Line/Create/selectors.js +36 -0
  202. package/v2Containers/Line/Edit/_lineEdit.scss +21 -0
  203. package/v2Containers/Line/Edit/actions.js +79 -0
  204. package/v2Containers/Line/Edit/constants.js +27 -0
  205. package/v2Containers/Line/Edit/index.js +1050 -0
  206. package/v2Containers/Line/Edit/messages.js +157 -0
  207. package/v2Containers/Line/Edit/reducer.js +83 -0
  208. package/v2Containers/Line/Edit/sagas.js +81 -0
  209. package/v2Containers/Line/Edit/selectors.js +29 -0
  210. package/v2Containers/Line/Edit/tests/actions.test.js +18 -0
  211. package/v2Containers/Line/Edit/tests/index.test.js +10 -0
  212. package/v2Containers/Line/Edit/tests/reducer.test.js +9 -0
  213. package/v2Containers/Line/Edit/tests/sagas.test.js +15 -0
  214. package/v2Containers/Line/Edit/tests/selectors.test.js +10 -0
  215. package/v2Containers/Login/assets/images/capillary_logo.png +0 -0
  216. package/v2Containers/Login/components/LoginForm/index.js +59 -0
  217. package/v2Containers/Login/components/LoginForm/messages.js +21 -0
  218. package/v2Containers/Login/components/LoginForm/tests/index.test.js +10 -0
  219. package/v2Containers/Login/index.js +106 -0
  220. package/v2Containers/Login/messages.js +21 -0
  221. package/v2Containers/Login/selectors.js +25 -0
  222. package/v2Containers/Login/tests/index.test.js +10 -0
  223. package/v2Containers/Login/tests/sagas.test.js +15 -0
  224. package/v2Containers/Login/tests/selectors.test.js +10 -0
  225. package/v2Containers/MobilePush/Create/_mobilePushCreate.scss +41 -0
  226. package/v2Containers/MobilePush/Create/actions.js +52 -0
  227. package/v2Containers/MobilePush/Create/constants.js +24 -0
  228. package/v2Containers/MobilePush/Create/index.js +1759 -0
  229. package/v2Containers/MobilePush/Create/messages.js +237 -0
  230. package/v2Containers/MobilePush/Create/reducer.js +72 -0
  231. package/v2Containers/MobilePush/Create/sagas.js +60 -0
  232. package/v2Containers/MobilePush/Create/selectors.js +28 -0
  233. package/v2Containers/MobilePush/Create/tests/actions.test.js +18 -0
  234. package/v2Containers/MobilePush/Create/tests/index.test.js +10 -0
  235. package/v2Containers/MobilePush/Create/tests/reducer.test.js +9 -0
  236. package/v2Containers/MobilePush/Create/tests/sagas.test.js +15 -0
  237. package/v2Containers/MobilePush/Create/tests/selectors.test.js +10 -0
  238. package/v2Containers/MobilePush/Edit/_mobilePushCreate.scss +38 -0
  239. package/v2Containers/MobilePush/Edit/actions.js +91 -0
  240. package/v2Containers/MobilePush/Edit/constants.js +35 -0
  241. package/v2Containers/MobilePush/Edit/index.js +1846 -0
  242. package/v2Containers/MobilePush/Edit/messages.js +253 -0
  243. package/v2Containers/MobilePush/Edit/reducer.js +113 -0
  244. package/v2Containers/MobilePush/Edit/sagas.js +119 -0
  245. package/v2Containers/MobilePush/Edit/selectors.js +32 -0
  246. package/v2Containers/MobilePush/Edit/tests/actions.test.js +18 -0
  247. package/v2Containers/MobilePush/Edit/tests/index.test.js +10 -0
  248. package/v2Containers/MobilePush/Edit/tests/reducer.test.js +9 -0
  249. package/v2Containers/MobilePush/Edit/tests/sagas.test.js +15 -0
  250. package/v2Containers/MobilePush/Edit/tests/selectors.test.js +10 -0
  251. package/v2Containers/MobilePush/commonMethods.js +249 -0
  252. package/v2Containers/MobilePush/eventsMap.js +127 -0
  253. package/v2Containers/MobilePush/initialSchema.js +1739 -0
  254. package/v2Containers/MobilepushWrapper/_mobilepushWrapper.scss +18 -0
  255. package/v2Containers/MobilepushWrapper/index.js +136 -0
  256. package/v2Containers/MobilepushWrapper/messages.js +29 -0
  257. package/v2Containers/MobilepushWrapper/tests/index.test.js +10 -0
  258. package/v2Containers/NotFoundPage/index.js +25 -0
  259. package/v2Containers/NotFoundPage/messages.js +13 -0
  260. package/v2Containers/NotFoundPage/tests/index.test.js +17 -0
  261. package/v2Containers/Sms/Create/_smsCreate.scss +58 -0
  262. package/v2Containers/Sms/Create/actions.js +27 -0
  263. package/v2Containers/Sms/Create/constants.js +16 -0
  264. package/v2Containers/Sms/Create/index.js +1017 -0
  265. package/v2Containers/Sms/Create/messages.js +85 -0
  266. package/v2Containers/Sms/Create/reducer.js +41 -0
  267. package/v2Containers/Sms/Create/sagas.js +35 -0
  268. package/v2Containers/Sms/Create/selectors.js +28 -0
  269. package/v2Containers/Sms/Create/tests/actions.test.js +18 -0
  270. package/v2Containers/Sms/Create/tests/index.test.js +10 -0
  271. package/v2Containers/Sms/Create/tests/reducer.test.js +9 -0
  272. package/v2Containers/Sms/Create/tests/sagas.test.js +15 -0
  273. package/v2Containers/Sms/Create/tests/selectors.test.js +10 -0
  274. package/v2Containers/Sms/Edit/actions.js +45 -0
  275. package/v2Containers/Sms/Edit/constants.js +18 -0
  276. package/v2Containers/Sms/Edit/index.js +1018 -0
  277. package/v2Containers/Sms/Edit/messages.js +89 -0
  278. package/v2Containers/Sms/Edit/reducer.js +52 -0
  279. package/v2Containers/Sms/Edit/sagas.js +50 -0
  280. package/v2Containers/Sms/Edit/selectors.js +32 -0
  281. package/v2Containers/Sms/Edit/tests/actions.test.js +18 -0
  282. package/v2Containers/Sms/Edit/tests/index.test.js +10 -0
  283. package/v2Containers/Sms/Edit/tests/reducer.test.js +9 -0
  284. package/v2Containers/Sms/Edit/tests/sagas.test.js +15 -0
  285. package/v2Containers/Sms/Edit/tests/selectors.test.js +10 -0
  286. package/v2Containers/Sms/initialSchema.js +281 -0
  287. package/v2Containers/TagList/_tagList.scss +8 -0
  288. package/v2Containers/TagList/actions.js +15 -0
  289. package/v2Containers/TagList/constants.js +7 -0
  290. package/v2Containers/TagList/index.js +236 -0
  291. package/v2Containers/TagList/messages.js +13 -0
  292. package/v2Containers/TagList/reducer.js +23 -0
  293. package/v2Containers/TagList/sagas.js +11 -0
  294. package/v2Containers/TagList/selectors.js +25 -0
  295. package/v2Containers/TagList/tests/actions.test.js +18 -0
  296. package/v2Containers/TagList/tests/index.test.js +10 -0
  297. package/v2Containers/TagList/tests/reducer.test.js +9 -0
  298. package/v2Containers/TagList/tests/sagas.test.js +15 -0
  299. package/v2Containers/TagList/tests/selectors.test.js +10 -0
  300. package/v2Containers/Templates/_templates.scss +349 -0
  301. package/v2Containers/Templates/actions.js +110 -0
  302. package/v2Containers/Templates/constants.js +45 -0
  303. package/v2Containers/Templates/index.js +1682 -0
  304. package/v2Containers/Templates/messages.js +273 -0
  305. package/v2Containers/Templates/reducer.js +142 -0
  306. package/v2Containers/Templates/sagas.js +180 -0
  307. package/v2Containers/Templates/selectors.js +68 -0
  308. package/v2Containers/Templates/tests/actions.test.js +18 -0
  309. package/v2Containers/Templates/tests/index.test.js +10 -0
  310. package/v2Containers/Templates/tests/reducer.test.js +9 -0
  311. package/v2Containers/Templates/tests/sagas.test.js +15 -0
  312. package/v2Containers/Templates/tests/selectors.test.js +10 -0
  313. package/v2Containers/TemplatesV2/_templatesV2.scss +5 -0
  314. package/v2Containers/TemplatesV2/actions.js +16 -0
  315. package/v2Containers/TemplatesV2/constants.js +10 -0
  316. package/v2Containers/TemplatesV2/index.js +217 -0
  317. package/v2Containers/TemplatesV2/messages.js +29 -0
  318. package/v2Containers/TemplatesV2/selectors.js +25 -0
  319. package/v2Containers/TemplatesV2/tests/actions.test.js +18 -0
  320. package/v2Containers/TemplatesV2/tests/index.test.js +10 -0
  321. package/v2Containers/TemplatesV2/tests/reducer.test.js +9 -0
  322. package/v2Containers/TemplatesV2/tests/sagas.test.js +15 -0
  323. package/v2Containers/TemplatesV2/tests/selectors.test.js +10 -0
  324. package/v2Containers/TestPage/constants.js +7 -0
  325. package/v2Containers/TestPage/index.js +31 -0
  326. package/v2Containers/TestPage/messages.js +13 -0
  327. package/v2Containers/TestPage/reducer.js +21 -0
  328. package/v2Containers/TestPage/sagas.js +11 -0
  329. package/v2Containers/Testv2/actions.js +15 -0
  330. package/v2Containers/Testv2/constants.js +7 -0
  331. package/v2Containers/Testv2/index.js +47 -0
  332. package/v2Containers/Testv2/messages.js +13 -0
  333. package/v2Containers/Testv2/reducer.js +23 -0
  334. package/v2Containers/Testv2/sagas.js +11 -0
  335. package/v2Containers/Testv2/selectors.js +25 -0
  336. package/v2Containers/Testv2/tests/actions.test.js +18 -0
  337. package/v2Containers/Testv2/tests/index.test.js +10 -0
  338. package/v2Containers/Testv2/tests/reducer.test.js +9 -0
  339. package/v2Containers/Testv2/tests/sagas.test.js +15 -0
  340. package/v2Containers/Testv2/tests/selectors.test.js +10 -0
  341. package/v2Containers/WeChat/MapTemplates/_mapTemplates.scss +8 -0
  342. package/v2Containers/WeChat/MapTemplates/actions.js +52 -0
  343. package/v2Containers/WeChat/MapTemplates/constants.js +28 -0
  344. package/v2Containers/WeChat/MapTemplates/index.js +1385 -0
  345. package/v2Containers/WeChat/MapTemplates/messages.js +73 -0
  346. package/v2Containers/WeChat/MapTemplates/reducer.js +74 -0
  347. package/v2Containers/WeChat/MapTemplates/sagas.js +86 -0
  348. package/v2Containers/WeChat/MapTemplates/selectors.js +25 -0
  349. package/v2Containers/WeChat/MapTemplates/tests/actions.test.js +18 -0
  350. package/v2Containers/WeChat/MapTemplates/tests/index.test.js +10 -0
  351. package/v2Containers/WeChat/MapTemplates/tests/reducer.test.js +9 -0
  352. package/v2Containers/WeChat/MapTemplates/tests/sagas.test.js +15 -0
  353. package/v2Containers/WeChat/MapTemplates/tests/selectors.test.js +10 -0
  354. package/v2Containers/WeChat/RichmediaTemplates/Create/_createRichmedia.scss +57 -0
  355. package/v2Containers/WeChat/RichmediaTemplates/Create/actions.js +36 -0
  356. package/v2Containers/WeChat/RichmediaTemplates/Create/constants.js +15 -0
  357. package/v2Containers/WeChat/RichmediaTemplates/Create/index.js +1053 -0
  358. package/v2Containers/WeChat/RichmediaTemplates/Create/messages.js +141 -0
  359. package/v2Containers/WeChat/RichmediaTemplates/Create/reducer.js +60 -0
  360. package/v2Containers/WeChat/RichmediaTemplates/Create/richmediaschema.js +497 -0
  361. package/v2Containers/WeChat/RichmediaTemplates/Create/sagas.js +48 -0
  362. package/v2Containers/WeChat/RichmediaTemplates/Create/selectors.js +37 -0
  363. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/actions.test.js +18 -0
  364. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/index.test.js +10 -0
  365. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/reducer.test.js +9 -0
  366. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/sagas.test.js +15 -0
  367. package/v2Containers/WeChat/RichmediaTemplates/Create/tests/selectors.test.js +10 -0
  368. package/v2Containers/WeChat/RichmediaTemplates/Edit/actions.js +20 -0
  369. package/v2Containers/WeChat/RichmediaTemplates/Edit/constants.js +10 -0
  370. package/v2Containers/WeChat/RichmediaTemplates/Edit/index.js +116 -0
  371. package/v2Containers/WeChat/RichmediaTemplates/Edit/messages.js +13 -0
  372. package/v2Containers/WeChat/RichmediaTemplates/Edit/reducer.js +28 -0
  373. package/v2Containers/WeChat/RichmediaTemplates/Edit/sagas.js +32 -0
  374. package/v2Containers/WeChat/RichmediaTemplates/Edit/selectors.js +30 -0
  375. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/actions.test.js +18 -0
  376. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/index.test.js +10 -0
  377. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/reducer.test.js +9 -0
  378. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/sagas.test.js +15 -0
  379. package/v2Containers/WeChat/RichmediaTemplates/Edit/tests/selectors.test.js +10 -0
  380. package/v2Containers/WeChat/RichmediaTemplates/View/actions.js +15 -0
  381. package/v2Containers/WeChat/RichmediaTemplates/View/constants.js +7 -0
  382. package/v2Containers/WeChat/RichmediaTemplates/View/index.js +47 -0
  383. package/v2Containers/WeChat/RichmediaTemplates/View/messages.js +13 -0
  384. package/v2Containers/WeChat/RichmediaTemplates/View/reducer.js +23 -0
  385. package/v2Containers/WeChat/RichmediaTemplates/View/sagas.js +11 -0
  386. package/v2Containers/WeChat/RichmediaTemplates/View/selectors.js +25 -0
  387. package/v2Containers/WeChat/RichmediaTemplates/View/tests/actions.test.js +18 -0
  388. package/v2Containers/WeChat/RichmediaTemplates/View/tests/index.test.js +10 -0
  389. package/v2Containers/WeChat/RichmediaTemplates/View/tests/reducer.test.js +9 -0
  390. package/v2Containers/WeChat/RichmediaTemplates/View/tests/sagas.test.js +15 -0
  391. package/v2Containers/WeChat/RichmediaTemplates/View/tests/selectors.test.js +10 -0
@@ -0,0 +1,479 @@
1
+ /*
2
+ *
3
+ * Gallery
4
+ *
5
+ */
6
+
7
+ import PropTypes from 'prop-types';
8
+
9
+ import React from 'react';
10
+ import { connect } from 'react-redux';
11
+ import { bindActionCreators } from 'redux';
12
+ import { FormattedMessage, injectIntl, intlShape } from 'react-intl';
13
+ import { createStructuredSelector } from 'reselect';
14
+ import moment from "moment";
15
+ import _ from "lodash";
16
+ import { CapHeader, CapInput, CapButton, CapSpin, CapIcon, CapDropdown, CapMenu, CapCustomCard, CapSlideBox, CapLabel } from '@capillarytech/cap-ui-library';
17
+ import { Popover } from 'antd';
18
+ import makeSelectGallery from './selectors';
19
+ import messages from './messages';
20
+ import * as actions from './actions';
21
+ import { UserIsAuthenticated } from '../../../utils/authWrapper';
22
+ import * as globalActions from '../../Cap/actions';
23
+ import {getMessageObject} from '../../../utils/messageUtils';
24
+ import * as commonUtil from '../../../utils/common';
25
+ import Pagination from '../../../components/Pagination';
26
+
27
+ import './_gallery.scss';
28
+ const {CapCustomCardList} = CapCustomCard;
29
+ export class Gallery extends React.Component { // eslint-disable-line react/prefer-stateless-function
30
+ constructor(props) {
31
+ super(props);
32
+ this.state = {
33
+ searchText: '',
34
+ selectedAsset: {},
35
+ showImagePreviewModal: false,
36
+ hoveredItem: '',
37
+ showEmbeddedPreview: false,
38
+ page: 1,
39
+ perPageLimit: 25,
40
+ totalCount: 0,
41
+ };
42
+ this.uploadImages = this.uploadImages.bind(this);
43
+ this.openFileDialog = this.openFileDialog.bind(this);
44
+ this.searchAsset = this.searchAsset.bind(this);
45
+ this.openPreviewMode = this.openPreviewMode.bind(this);
46
+ this.renderAssetPreviewModal = this.renderAssetPreviewModal.bind(this);
47
+ this.toggleImagePreview = this.toggleImagePreview.bind(this);
48
+ this.selectAsset = this.selectAsset.bind(this);
49
+ this.handleGallery = this.handleGallery.bind(this);
50
+ this.deleteAsset = this.deleteAsset.bind(this);
51
+ this.handleOnHoverItem = this.handleOnHoverItem.bind(this);
52
+ this.unmountEvent = this.unmountEvent.bind(this);
53
+ this.handleSortingChange = this.handleSortingChange.bind(this);
54
+ this.openEmbeddedPreviewMode = this.openEmbeddedPreviewMode.bind(this);
55
+ this.hideEmbeddedPreviewMode = this.hideEmbeddedPreviewMode.bind(this);
56
+ this.delayTimer = 0;
57
+ }
58
+
59
+ componentWillMount() {
60
+ const params = {
61
+ name: this.state.searchText,
62
+ sortBy: 'Most Recent',
63
+ };
64
+ this.getAllAssets({params});
65
+ this.props.actions.getUserList();
66
+ window.addEventListener("message", this.handleGallery, false);
67
+ }
68
+
69
+ componentWillReceiveProps(nextProps) {
70
+ if ( !_.isEqual(nextProps.Gallery.uploadAssetSuccess, this.props.Gallery.uploadAssetSuccess) && nextProps.Gallery.uploadAssetSuccess) {
71
+ if (this.props.location.query.type === 'embedded' && nextProps.Gallery.uploadedAssetData) {
72
+ const response = {
73
+ action: "selectAsset",
74
+ value: JSON.stringify(nextProps.Gallery.uploadedAssetData),
75
+ };
76
+ parent.postMessage(JSON.stringify(response), '*');
77
+ }
78
+ const message = getMessageObject('success', this.props.intl.formatMessage(messages.assetUploadSuccess), true);
79
+ this.props.globalActions.addMessageToQueue(message);
80
+ const params = {
81
+ name: this.state.searchText,
82
+ };
83
+ this.getAllAssets({params});
84
+ }
85
+ if (!this.props.Gallery.fetchingAllAssets && !_.isEmpty(this.props.Gallery.assetList) && this.props.Gallery.assetList[0] && this.props.Gallery.assetList[0].totalCount && this.state.totalCount === 0) {
86
+ this.setState({totalCount: this.props.Gallery.assetList[0].totalCount});
87
+ }
88
+ if ( !_.isEqual(nextProps.Gallery.uploadAssetSuccess, this.props.Gallery.uploadAssetSuccess) && !nextProps.Gallery.uploadAssetSuccess && !nextProps.Gallery.assetUploading) {
89
+ const message = getMessageObject('error', this.props.intl.formatMessage(messages.assetUploadFailed), true);
90
+ this.props.globalActions.addMessageToQueue(message);
91
+ }
92
+
93
+ if (!nextProps.Gallery.deletingAsset && !nextProps.Gallery.assetDeleteError && !_.isEqual(nextProps.Gallery.deletingAsset, this.props.Gallery.deletingAsset)) {
94
+ const message = getMessageObject('success', this.props.intl.formatMessage(messages.assetDeleteSuccess), true);
95
+ this.props.globalActions.addMessageToQueue(message);
96
+ const params = {
97
+ name: this.state.searchText,
98
+ sortBy: 'Most Recent',
99
+ };
100
+ this.getAllAssets({params});
101
+ }
102
+ if (!nextProps.Gallery.deletingAsset && nextProps.Gallery.assetDeleteError && !_.isEqual(nextProps.Gallery.deletingAsset, this.props.Gallery.deletingAsset)) {
103
+ const message = getMessageObject('error', this.props.intl.formatMessage(messages.assetDeleteFailed), true);
104
+ this.props.globalActions.addMessageToQueue(message);
105
+ }
106
+ if ( nextProps.Gallery.itemDeleted || !nextProps.Gallery.assetUploading) {
107
+ const params = {
108
+ name: this.state.searchText,
109
+ sortBy: 'Most Recent',
110
+ };
111
+ this.getAllAssets({params}, true);
112
+ }
113
+ }
114
+
115
+ componentWillUnmount() {
116
+ window.removeEventListener("message", this.handleGallery, false);
117
+ }
118
+
119
+ getAllAssets = ({params, getNextPage, resetPage}, isReRender = false) => {
120
+ let queryParams = params;
121
+ let page = this.state.page;
122
+ if (!this.props.Gallery.fetchingAllAssets && ((resetPage || (page === 1 && this.state.totalCount === 0) || page <= (this.state.totalCount / this.state.perPageLimit)) || isReRender )) {
123
+ if (getNextPage) {
124
+ page += 1;
125
+ }
126
+
127
+ let totalCount = this.state.totalCount;
128
+ if (resetPage) {
129
+ page = 1;
130
+ totalCount = 0;
131
+ }
132
+ if ((!params || _.isEmpty(params))) {
133
+ queryParams = {
134
+ sortBy: this.state.sortBy,
135
+ };
136
+ }
137
+ if (this.state.searchText !== "") {
138
+ queryParams = {...queryParams, name: this.state.searchText};
139
+ }
140
+ this.setState({page, totalCount}, () => {
141
+ queryParams.page = page;
142
+ queryParams.perPage = this.state.perPageLimit;
143
+ this.props.actions.getAllAssets('image', queryParams);
144
+ });
145
+ }
146
+ };
147
+ handleGallery = (e) => {
148
+ const type = e.data;
149
+ switch (type) {
150
+ case 'unmount':
151
+ this.unmountEvent();
152
+ break;
153
+ default:
154
+ break;
155
+ }
156
+ };
157
+
158
+ handleSortingChange(value) {
159
+ const params = {
160
+ name: this.state.searchText,
161
+ sortBy: value,
162
+ };
163
+ this.getAllAssets({params, resetPage: true});
164
+ }
165
+ unmountEvent() {
166
+ window.removeEventListener("message", this.handleGallery, false);
167
+ }
168
+
169
+ handleOnHoverItem(isHovering, id) {
170
+ if (isHovering) {
171
+ this.setState({hoveredItem: id});
172
+ } else {
173
+ this.setState({hoveredItem: ''});
174
+ }
175
+ }
176
+
177
+ toggleImagePreview() {
178
+ this.setState({ showImagePreviewModal: !this.state.showImagePreviewModal });
179
+ }
180
+
181
+ selectAsset() {
182
+ const response = {
183
+ action: "selectAsset",
184
+ value: JSON.stringify(this.state.selectedAsset),
185
+ };
186
+ parent.postMessage(JSON.stringify(response), '*');
187
+ }
188
+
189
+ openPreviewMode(selectedAsset) {
190
+ const asset = selectedAsset;
191
+ if (this.props.location.query.type !== 'embedded' || this.props.isFullMode) {
192
+ this.toggleImagePreview();
193
+ } else {
194
+ asset.showButtons = asset.showButtons ? !asset.showButtons : true;
195
+ }
196
+ this.setState({selectedAsset: asset});
197
+ }
198
+
199
+ hideEmbeddedPreviewMode() {
200
+ this.setState({selectedAsset: {}, showEmbeddedPreview: false});
201
+ }
202
+
203
+ openEmbeddedPreviewMode(selectAsset) {
204
+ this.setState({selectedAsset: selectAsset, showEmbeddedPreview: true});
205
+ }
206
+
207
+ searchAsset(value) {
208
+ this.setState({searchText: value}, () => {
209
+ this.delay(() => {
210
+ const params = {
211
+ name: this.state.searchText,
212
+ };
213
+ if (this.state.sortBy) {
214
+ params.sortBy = this.state.sortBy;
215
+ }
216
+ this.getAllAssets({params, resetPage: true});
217
+ }, 1000);
218
+ });
219
+ }
220
+
221
+ delay(callback, ms) {
222
+ clearTimeout(this.delayTimer);
223
+ this.delayTimer = setTimeout(callback, ms);
224
+ }
225
+
226
+ uploadImages(e, {files}) {
227
+ e.preventDefault();
228
+ const _URL = window.URL || window.webkitURL;
229
+ //const file = files[0];
230
+ for (let file in files) {
231
+ const img = new Image();
232
+ const that = this;
233
+ img.src = _URL.createObjectURL(files[file]);
234
+ img.onload = function () {
235
+ const fileParams = {
236
+ width: this.width,
237
+ height: this.height,
238
+ };
239
+ that.props.actions.uploadAsset(files[file], 'image', fileParams);
240
+ };
241
+ }
242
+ }
243
+
244
+ prepareData() {
245
+ const data = [];
246
+ const assetList = this.props.Gallery.assetList;
247
+ _.forEach(assetList, (asset) => {
248
+ const tmpData = {};
249
+ tmpData.id = asset._id;
250
+ const updateDateTime = (moment().format('DD-MM-YYYY') === moment(asset.updatedAt).format('DD-MM-YYYY')) ? moment(asset.updatedAt).format('hh:mma') : moment(asset.updatedAt).format('DD-MM-YYYY');
251
+ tmpData.content = (
252
+ <div className="image-container" onClick={() => this.openPreviewMode(asset)}>
253
+ <img style={{width: '100%'}} src={asset.metaInfo.secure_file_path ? asset.metaInfo.secure_file_path : asset.metaInfo.public_url} alt={asset.name} />
254
+ <div className={asset.showButtons ? 'overlay show-overlay' : 'overlay hide'}>
255
+ <div>
256
+ <CapButton type="secondary" className="select-button" onClick={(e) => this.selectAsset(e)}>
257
+ <FormattedMessage {...messages.select} />
258
+ </CapButton>
259
+ </div>
260
+ <div>
261
+ <CapButton type="cancel" className="preview-button" onClick={() => this.openEmbeddedPreviewMode(asset)}>
262
+ <FormattedMessage {...messages.preview} />
263
+ </CapButton>
264
+ </div>
265
+ </div>
266
+ </div>
267
+ );
268
+ tmpData.footer = (
269
+ <div className="card-footer-wrapper">
270
+ <div className="card-title-container">
271
+ <div className="card-title-wrapper">
272
+ <p className="card-title" onClick={() => this.openPreviewMode(asset)}>{asset.name}</p>
273
+ </div>
274
+ <div className="more-icon-wrapper">
275
+ <Popover
276
+ placement="leftTop"
277
+ content={<div style={{ cursor: 'pointer'}}><p onClick={() => this.deleteAsset(asset)}>
278
+ <FormattedMessage {...messages.delete} />
279
+ </p></div>} trigger="click">
280
+ <i className="material-icons creative-icons">more_vert</i>
281
+ </Popover>
282
+ </div>
283
+ </div>
284
+ <p className="card-detail"><FormattedMessage {...messages.uploadedAt} />: {updateDateTime}</p>
285
+ </div>
286
+ );
287
+ data.push(tmpData);
288
+ });
289
+ return data;
290
+ }
291
+ deleteAsset(asset) {
292
+ this.props.actions.deleteAssetById(asset._id, asset.type);
293
+ }
294
+ getTemplateDataForGrid = ({templates, handlers, filterContent, isLoading, loadingTip}) => {
295
+ const currentChannel = 'gallery';
296
+ const cardDataList = templates.length ? _.map(templates, (template) => {
297
+ const templateData =
298
+ {
299
+ key: `${currentChannel}-card-${template.name}`,
300
+ title: <span title={template.name} >{template.name}</span>,
301
+ extra: [
302
+ <CapIcon
303
+ style={{marginRight: '16px'}}
304
+ type="eye"
305
+ onClick={() => { this.openPreviewMode(template); }}
306
+ />,
307
+ <CapDropdown
308
+ overlay={
309
+ <CapMenu>
310
+ <CapMenu.Item onClick={() => this.deleteAsset(template)}>
311
+ <FormattedMessage {...messages.delete} />
312
+ </CapMenu.Item>
313
+ </CapMenu>
314
+ }
315
+ >
316
+ <CapIcon type="more" />
317
+ </CapDropdown>,
318
+ ],
319
+ };
320
+ if (!this.props.isFullMode) {
321
+ templateData.hoverOption = <CapButton onClick={(e) => handlers.selectAsset(e, template._id)}><FormattedMessage {...messages.select} /></CapButton>;
322
+ }
323
+ const secureFilePath = _.get(template, 'metaInfo.secure_file_path');
324
+ templateData.url = secureFilePath || _.get(template, 'metaInfo.public_url');
325
+ return templateData;
326
+ }) : [];
327
+ return (<div>
328
+ {filterContent}
329
+ <CapSpin spinning={isLoading} tip={loadingTip}>
330
+ {!_.isEmpty(templates) && <div className="pagination-container">
331
+ <CapCustomCardList key={`${currentChannel}-card-list`} cardList={cardDataList} type={'Email'} />
332
+ </div>}
333
+ </CapSpin>
334
+
335
+ </div>);
336
+ }
337
+ openFileDialog() {
338
+ document.getElementById("fileName").click();
339
+ }
340
+
341
+ renderAssetPreviewModal() {
342
+ const slideboxContent = (
343
+ <div>
344
+ <div style={{overflow: 'hidden', textAlign: 'center'}}>
345
+ <div style={{ display: 'flex', justifyContent: 'center', height: '85vh', background: 'url(https://s3.amazonaws.com/test_files_cache_bkp/intouch_creative_assets/1720b7f7e78860c1f905.svg)' }}>
346
+ <div style={{ height: "85vh", verticalAlign: 'middle' }}>
347
+ <img style={{maxWidth: '100%', maxHeight: '100%'}} src={this.state.selectedAsset.metaInfo.secure_file_path ? this.state.selectedAsset.metaInfo.secure_file_path : this.state.selectedAsset.metaInfo.public_url} alt={this.state.selectedAsset.name} />
348
+ </div>
349
+ </div>
350
+ <a href={this.state.selectedAsset.metaInfo.public_url} target="_blank" style={{ position: 'fixed', right: '55px', bottom: '18vh' }} ><i className="material-icons" style={{ color: '#2E89DF', cursor: 'pointer' }}>fullscreen</i></a>
351
+ </div>
352
+ </div>
353
+ );
354
+ const on = moment(this.state.selectedAsset.updatedAt).format('DD MMM YYYY hh:mm A');
355
+ const by = commonUtil.getUserNameById(parseInt(this.state.selectedAsset.updatedBy, 10), commonUtil.getMergedUserList(this.props.Gallery.userList));
356
+ const width = this.state.selectedAsset.metaInfo.width;
357
+ const height = this.state.selectedAsset.metaInfo.height;
358
+ const slideboxHeader = (<div>
359
+ <CapHeader
360
+ title={this.state.selectedAsset.name}
361
+ description={<FormattedMessage
362
+ {...messages.lastUpdated}
363
+ values={{on, by }}
364
+ />}
365
+ />
366
+ <CapLabel type="label2">
367
+ {width && height && <span>
368
+ <FormattedMessage {...messages.dimensions} />: {`${width}X${height} px`}
369
+ </span>}
370
+ {' '}
371
+ <FormattedMessage {...messages.size} />:{' '}
372
+ {(!isNaN(this.state.selectedAsset.metaInfo.file_size) ? `${(parseFloat(this.state.selectedAsset.metaInfo.file_size) / 1024).toFixed(2)} KB` : this.state.selectedAsset.metaInfo.file_size )}
373
+ </CapLabel>
374
+ </div>);
375
+ return (
376
+ <CapSlideBox
377
+ header={slideboxHeader}
378
+ content={slideboxContent}
379
+ show={this.state.showImagePreviewModal}
380
+ handleClose={this.toggleImagePreview}
381
+ size="size-l"
382
+ />
383
+ );
384
+ }
385
+ render() {
386
+ const filterContent = (
387
+ <div className="action-container" style={{ display: 'inline-flex', width: '100%'}}>
388
+ <div style={{ marginTop: '8px', width: '50%'}}>
389
+ <CapInput
390
+ className="search-text"
391
+ style={{width: '210px'}}
392
+ placeholder="Search"
393
+ prefix={<i className="material-icons" style={{color: '#707070', fontSize: '16px'}}>search</i>}
394
+ value={this.state.searchText}
395
+ onChange={(e) => this.searchAsset(e.target.value)}
396
+ />
397
+ </div>
398
+ <div style={{ textAlign: 'right', marginTop: '16px', width: '50%'}}>
399
+ <form encType="multipart/form-data" id="myForm">
400
+ <input style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files})} accept="image/*" multiple/>
401
+ <CapButton type={this.props.location.query.type !== 'embedded' ? 'primary' : 'secondary'} onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
402
+ <FormattedMessage {...messages.upload} />
403
+ </CapButton>
404
+ </form>
405
+ </div>
406
+ </div>
407
+ );
408
+ const isLoading = this.props.Gallery.assetUploading || this.props.Gallery.fetchingAllAssets;
409
+ const loadingTip = "Loading gallery... ";
410
+ const assetList = this.props.Gallery.assetList;
411
+ return (
412
+ <div>
413
+ {this.state.showEmbeddedPreview ?
414
+ <div className="embedded-preview-wrapper">
415
+ <div className="embedded-preview-header" onClick={this.hideEmbeddedPreviewMode}>
416
+ <p className="embedded-preview-header-wrapper" style={{display: 'inline-flex'}}>
417
+ <i className="material-icons">arrow_back</i>
418
+ <span className="embedded-preview-header-text">
419
+ <FormattedMessage {...messages.backToGallery} />
420
+ </span>
421
+ </p>
422
+ </div>
423
+ <div style={{height: "75vh", width: '100%'}}>
424
+ <div style={{overflow: 'hidden', textAlign: 'center'}}>
425
+ <div style={{ display: 'table', height: '75vh', width: '85vw', background: 'url(https://s3.amazonaws.com/test_files_cache_bkp/intouch_creative_assets/1720b7f7e78860c1f905.svg)' }}>
426
+ <div style={{ height: "75vh", display: 'table-cell', verticalAlign: 'middle' }}>
427
+ <img style={{maxWidth: '100%', maxHeight: '100%'}} src={this.state.selectedAsset.metaInfo.secure_file_path ? this.state.selectedAsset.metaInfo.secure_file_path : this.state.selectedAsset.metaInfo.public_url} alt={this.state.selectedAsset.name} />
428
+ </div>
429
+ </div>
430
+ <a href={this.state.selectedAsset.metaInfo.public_url} target="_blank" style={{ position: 'fixed', right: '24px', bottom: '17vh' }} ><i className="material-icons" style={{ color: '#2E89DF', cursor: 'pointer' }}>fullscreen</i></a>
431
+ </div>
432
+ <div style={{ fontSize: '14px', color: '#333333', lineHeight: '24px', fontFamily: 'OpenSans', textAlign: 'center', paddingTop: '10px'}}>
433
+ <p><span><FormattedMessage {...messages.dimensions} />: </span> <span>{`${this.state.selectedAsset.metaInfo.width}X${this.state.selectedAsset.metaInfo.height} px`}</span></p>
434
+ <p><span><FormattedMessage {...messages.size} />: </span> <span>{this.state.selectedAsset.metaInfo.file_size}</span></p>
435
+ <p><span><FormattedMessage {...messages.uploadedOn} />: </span> <span>{moment(this.state.selectedAsset.updatedAt).format('DD MMM YYYY hh:mm A')}</span></p>
436
+ {/* <p><span>URL: </span> <span>{this.state.selectedAsset.metaInfo.publicUrl}</span></p> */}
437
+ </div>
438
+ </div>
439
+ </div> :
440
+ <Pagination onPageChange={() => { this.getAllAssets({getNextPage: true}); }} paginationSelector="pagination-container">
441
+ {/* <CardGrid
442
+ listItem={this.prepareData()}
443
+ filterContent={filterContent}
444
+ onHoverItem={this.handleOnHoverItem}
445
+ onItemClick={this.handleOnHoverItem}
446
+ enablePagination
447
+ /> */}
448
+ {this.getTemplateDataForGrid({isLoading, loadingTip, channel: this.state.channel, templates: assetList, filterContent, handlers: {selectAsset: this.selectAsset}})}
449
+
450
+ </Pagination>
451
+ }
452
+ {this.state.showImagePreviewModal && this.renderAssetPreviewModal()}
453
+ {/*</Spin>*/}
454
+ </div>
455
+ );
456
+ }
457
+ }
458
+
459
+ Gallery.propTypes = {
460
+ actions: PropTypes.object.isRequired,
461
+ Gallery: PropTypes.object,
462
+ globalActions: PropTypes.object,
463
+ location: PropTypes.object,
464
+ intl: intlShape.isRequired,
465
+ isFullMode: PropTypes.bool,
466
+ };
467
+
468
+ const mapStateToProps = createStructuredSelector({
469
+ Gallery: makeSelectGallery(),
470
+ });
471
+
472
+ function mapDispatchToProps(dispatch) {
473
+ return {
474
+ actions: bindActionCreators(actions, dispatch),
475
+ globalActions: bindActionCreators(globalActions, dispatch),
476
+ };
477
+ }
478
+
479
+ export default UserIsAuthenticated(connect(mapStateToProps, mapDispatchToProps)(injectIntl(Gallery)));
@@ -0,0 +1,97 @@
1
+ /*
2
+ * Gallery Messages
3
+ *
4
+ * This contains all the text for the Gallery component.
5
+ */
6
+ import { defineMessages } from 'react-intl';
7
+
8
+ export default defineMessages({
9
+ uploadedAt: {
10
+ id: 'app.containers.Assets.Gallery.uploadedAt',
11
+ defaultMessage: 'Uploaded at ',
12
+ },
13
+ uploadedOn: {
14
+ id: 'app.containers.Assets.Gallery.uploadedOn',
15
+ defaultMessage: 'Uploaded On ',
16
+ },
17
+ uploadedBy: {
18
+ id: 'app.containers.Assets.Gallery.uploadedBy',
19
+ defaultMessage: 'Uploaded By ',
20
+ },
21
+ upload: {
22
+ id: 'app.containers.Assets.Gallery.upload',
23
+ defaultMessage: 'Upload Image',
24
+ },
25
+ imagePreview: {
26
+ id: 'app.containers.Assets.Gallery.imagePreview',
27
+ defaultMessage: 'Image Preview',
28
+ },
29
+ size: {
30
+ id: 'app.containers.Assets.Gallery.size',
31
+ defaultMessage: 'Size',
32
+ },
33
+ dimensions: {
34
+ id: 'app.containers.Assets.Gallery.dimensions',
35
+ defaultMessage: 'Dimensions',
36
+ },
37
+ gallery: {
38
+ id: 'app.containers.Assets.Gallery.gallery',
39
+ defaultMessage: 'Gallery',
40
+ },
41
+ backToGallery: {
42
+ id: 'app.containers.Assets.Gallery.backToGallery',
43
+ defaultMessage: 'Back to Image Gallery',
44
+ },
45
+ mostRecent: {
46
+ id: 'app.containers.Assets.Gallery.mostRecent',
47
+ defaultMessage: 'Most Recent',
48
+ },
49
+ alphabetically: {
50
+ id: 'app.containers.Assets.Gallery.alphabetically',
51
+ defaultMessage: 'Alphabetically',
52
+ },
53
+ sortby: {
54
+ id: 'app.containers.Assets.Gallery.sortby',
55
+ defaultMessage: 'Sort by',
56
+ },
57
+ delete: {
58
+ id: 'app.containers.Assets.Gallery.delete',
59
+ defaultMessage: 'Delete',
60
+ },
61
+ search: {
62
+ id: 'app.containers.Assets.Gallery.search',
63
+ defaultMessage: 'Search',
64
+ },
65
+ select: {
66
+ id: 'app.containers.Assets.Gallery.select',
67
+ defaultMessage: 'Select',
68
+ },
69
+ preview: {
70
+ id: 'app.containers.Assets.Gallery.preview',
71
+ defaultMessage: 'Preview',
72
+ },
73
+ assetUploadSuccess: {
74
+ id: 'app.containers.Assets.Gallery.assetUploadSuccess',
75
+ defaultMessage: 'Image Uploaded Successfully',
76
+ },
77
+ assetUploadFailed: {
78
+ id: 'app.containers.Assets.Gallery.assetUploadFailed',
79
+ defaultMessage: 'Image uploaded failed',
80
+ },
81
+ assetDeleteSuccess: {
82
+ id: 'app.containers.Assets.Gallery.assetDeleteSuccess',
83
+ defaultMessage: 'Image deleted successfully.',
84
+ },
85
+ assetDeleteFailed: {
86
+ id: 'app.containers.Assets.Gallery.assetDeleteFailed',
87
+ defaultMessage: 'Image deletion failed.',
88
+ },
89
+ noAssetMessage: {
90
+ id: 'app.containers.Assets.Gallery.noAssetMessage',
91
+ defaultMessage: 'No image is uploaded',
92
+ },
93
+ lastUpdated: {
94
+ id: 'app.containers.Assets.Gallery.lastUpdated',
95
+ defaultMessage: 'Last update {on} by {by}',
96
+ },
97
+ });
@@ -0,0 +1,81 @@
1
+ /*
2
+ *
3
+ * Gallery reducer
4
+ *
5
+ */
6
+
7
+ import { fromJS } from 'immutable';
8
+ import * as types from './constants';
9
+
10
+ const initialState = fromJS({
11
+ assetList: [],
12
+ assetUploading: false,
13
+ fetchingAllAssets: false,
14
+ });
15
+
16
+ function galleryReducer(state = initialState, action) {
17
+ switch (action.type) {
18
+ case types.GET_ALL_ASSETS_REQUEST:
19
+ return state
20
+ .set('fetchingAllAssets', true)
21
+ .set('fetchAllAssetSuccess', false);
22
+ case types.GET_ALL_ASSETS_SUCCESS:
23
+ if (action.isReset) {
24
+ return state
25
+ .set('assetList', fromJS(action.data.assets))
26
+ .set('fetchingAllAssets', false)
27
+ .set('fetchAllAssetSuccess', true);
28
+ }
29
+ return state
30
+ .set('assetList', fromJS(state.get('assetList').toJS().concat(action.data.assets)))
31
+ .set('fetchingAllAssets', false)
32
+ .set('fetchAllAssetSuccess', true);
33
+ case types.GET_ALL_ASSETS_FAILURE:
34
+ return state
35
+ .set('fetchingAllAssets', false)
36
+ .set('fetchAllAssetSuccess', false);
37
+ case types.UPLOAD_ASSET_REQUEST:
38
+ return state
39
+ .set('uploadAssetSuccess', false)
40
+ .set('assetUploading', true);
41
+ case types.UPLOAD_ASSET_SUCCESS:
42
+ return state
43
+ .set('uploadAssetSuccess', (action.statusCode !== undefined && action.statusCode !== '' && action.statusCode < 300))
44
+ .set('assetUploading', false)
45
+ .set('uploadedAssetData', action.data);
46
+ case types.UPLOAD_ASSET_FAILURE:
47
+ return state
48
+ .set('uploadAssetSuccess', false)
49
+ .set('assetUploading', false);
50
+ case types.DELETE_ASSET_REQUEST:
51
+ return state
52
+ .set('deletingAsset', true)
53
+ .set('assetDeleteError', false).set("itemDeleted", false);
54
+ case types.DELETE_ASSET_SUCCESS:
55
+ return state
56
+ .set('deletingAsset', false).set("itemDeleted", true);
57
+ case types.DELETE_ASSET_FAILURE:
58
+ return state
59
+ .set('deletingAsset', false)
60
+ .set('assetDeleteError', true).set("itemDeleted", false);
61
+ case types.GET_USER_LIST_REQUEST:
62
+ return state
63
+ .set('fetchingUserList', true)
64
+ .set('userList', fromJS({}))
65
+ .set('userListFetchError', false);
66
+ case types.GET_USER_LIST_SUCCESS:
67
+ return state
68
+ .set('fetchingUserList', false)
69
+ .set('userList', fromJS(action.data))
70
+ .set('userListFetchError', false);
71
+ case types.GET_USER_LIST_FAILURE:
72
+ return state
73
+ .set('fetchingUserList', false)
74
+ .set('userList', fromJS({}))
75
+ .set('userListFetchError', true);
76
+ default:
77
+ return state;
78
+ }
79
+ }
80
+
81
+ export default galleryReducer;