@capillarytech/creatives-library 0.1.32 → 1.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 (1067) hide show
  1. package/index.js +8 -9
  2. package/package.json +7 -62
  3. package/app.js +0 -92
  4. package/assets/loading_img.gif +0 -0
  5. package/components/BreadCrumbs/index.js +0 -64
  6. package/components/BreadCrumbs/messages.js +0 -13
  7. package/components/BreadCrumbs/tests/index.test.js +0 -10
  8. package/components/CapTagList/index.js +0 -233
  9. package/components/CapTagList/messages.js +0 -25
  10. package/components/CapTagList/tests/index.test.js +0 -10
  11. package/components/Card/_customCard.scss +0 -35
  12. package/components/Card/index.js +0 -76
  13. package/components/Card/tests/index.test.js +0 -10
  14. package/components/CardGrid/index.js +0 -69
  15. package/components/CardGrid/tests/index.test.js +0 -10
  16. package/components/Ckeditor/index.js +0 -204
  17. package/components/Ckeditor/messages.js +0 -13
  18. package/components/Ckeditor/tests/index.test.js +0 -10
  19. package/components/Component/index.js +0 -27
  20. package/components/Component/tests/index.test.js +0 -10
  21. package/components/CustomPopOver/index.js +0 -80
  22. package/components/CustomPopOver/messages.js +0 -13
  23. package/components/CustomPopOver/tests/index.test.js +0 -10
  24. package/components/DateFilter/index.js +0 -347
  25. package/components/DateFilter/messages.js +0 -17
  26. package/components/DateFilter/tests/index.test.js +0 -15
  27. package/components/DateRange/index.js +0 -111
  28. package/components/DateRange/messages.js +0 -13
  29. package/components/DateRange/tests/index.test.js +0 -10
  30. package/components/Edmeditor/index.js +0 -63
  31. package/components/Edmeditor/messages.js +0 -13
  32. package/components/Edmeditor/tests/index.test.js +0 -10
  33. package/components/EmailPreview/_emailPreview.scss +0 -119
  34. package/components/EmailPreview/assets/images/iPad.svg +0 -10
  35. package/components/EmailPreview/assets/images/mobile.png +0 -0
  36. package/components/EmailPreview/index.js +0 -103
  37. package/components/EmailPreview/messages.js +0 -17
  38. package/components/EmailPreview/tests/index.test.js +0 -10
  39. package/components/Footer/index.js +0 -27
  40. package/components/Footer/messages.js +0 -13
  41. package/components/Footer/tests/index.test.js +0 -10
  42. package/components/FormBuilder/_formBuilder.scss +0 -85
  43. package/components/FormBuilder/index.js +0 -3296
  44. package/components/FormBuilder/messages.js +0 -13
  45. package/components/FormBuilder/tests/index.test.js +0 -10
  46. package/components/ImagePreview/_imagePreview.scss +0 -63
  47. package/components/ImagePreview/index.js +0 -50
  48. package/components/ImagePreview/messages.js +0 -13
  49. package/components/ImagePreview/tests/index.test.js +0 -10
  50. package/components/PageHeader/_pageHeader.scss +0 -22
  51. package/components/PageHeader/index.js +0 -36
  52. package/components/PageHeader/messages.js +0 -13
  53. package/components/PageHeader/tests/index.test.js +0 -10
  54. package/components/Pagination/_pagination.scss +0 -5
  55. package/components/Pagination/index.js +0 -47
  56. package/components/Pagination/tests/index.test.js +0 -10
  57. package/components/PreviewSideBar/_previewsidebar.scss +0 -28
  58. package/components/PreviewSideBar/index.js +0 -146
  59. package/components/PreviewSideBar/messages.js +0 -33
  60. package/components/PreviewSideBar/tests/index.test.js +0 -10
  61. package/components/Sidebar/_sidebar.scss +0 -115
  62. package/components/Sidebar/index.js +0 -234
  63. package/components/Sidebar/messages.js +0 -21
  64. package/components/Sidebar/tests/index.test.js +0 -10
  65. package/components/SlideBox/_slideBox.scss +0 -63
  66. package/components/SlideBox/index.js +0 -47
  67. package/components/SlideBox/tests/index.test.js +0 -103
  68. package/components/SmsEditor/index.js +0 -53
  69. package/components/SmsEditor/tests/index.test.js +0 -10
  70. package/components/SmsTest/index.js +0 -115
  71. package/components/SmsTest/messages.js +0 -13
  72. package/components/SmsTest/tests/index.test.js +0 -10
  73. package/components/TemplatePreview/_templatePreview.scss +0 -352
  74. package/components/TemplatePreview/assets/images/WECHAT_5x.png +0 -0
  75. package/components/TemplatePreview/assets/images/androidPushMessage.svg +0 -45
  76. package/components/TemplatePreview/assets/images/iPhonePushMessage.svg +0 -135
  77. package/components/TemplatePreview/assets/images/mobile.svg +0 -24
  78. package/components/TemplatePreview/assets/images/sms-body.png +0 -0
  79. package/components/TemplatePreview/assets/images/sms-icon.png +0 -0
  80. package/components/TemplatePreview/assets/images/sms_mobile.png +0 -0
  81. package/components/TemplatePreview/assets/images/user-icon.svg +0 -19
  82. package/components/TemplatePreview/assets/images/wechat-mobile.svg +0 -78
  83. package/components/TemplatePreview/index.js +0 -174
  84. package/components/TemplatePreview/messages.js +0 -29
  85. package/components/TemplatePreview/tests/index.test.js +0 -10
  86. package/components/Toastr/index.js +0 -59
  87. package/components/Toastr/messages.js +0 -13
  88. package/components/Toastr/tests/index.test.js +0 -10
  89. package/components/ToastrMessage/index.js +0 -108
  90. package/components/ToastrMessage/messages.js +0 -13
  91. package/components/ToastrMessage/tests/index.test.js +0 -10
  92. package/components/TopBar/_topbar.scss +0 -46
  93. package/components/TopBar/assets/images/capillary_logo.png +0 -0
  94. package/components/TopBar/index.js +0 -112
  95. package/components/TopBar/messages.js +0 -29
  96. package/components/TopBar/tests/index.test.js +0 -10
  97. package/config/app.js +0 -24
  98. package/config/path.js +0 -3
  99. package/config/request.js +0 -135
  100. package/config/toastr.js +0 -44
  101. package/containers/App/actions.js +0 -7
  102. package/containers/App/constants.js +0 -3
  103. package/containers/App/reducer.js +0 -19
  104. package/containers/App/sagas.js +0 -26
  105. package/containers/App/selectors.js +0 -25
  106. package/containers/App/tests/actions.test.js +0 -18
  107. package/containers/App/tests/reducer.test.js +0 -9
  108. package/containers/App/tests/sagas.test.js +0 -15
  109. package/containers/App/tests/selectors.test.js +0 -10
  110. package/containers/Assets/Gallery/_gallery.scss +0 -126
  111. package/containers/Assets/Gallery/actions.js +0 -37
  112. package/containers/Assets/Gallery/constants.js +0 -23
  113. package/containers/Assets/Gallery/index.js +0 -463
  114. package/containers/Assets/Gallery/messages.js +0 -89
  115. package/containers/Assets/Gallery/reducer.js +0 -81
  116. package/containers/Assets/Gallery/sagas.js +0 -84
  117. package/containers/Assets/Gallery/selectors.js +0 -25
  118. package/containers/Assets/Gallery/tests/__snapshots__/reducer.test.js.snap +0 -7
  119. package/containers/Assets/Gallery/tests/actions.test.js +0 -26
  120. package/containers/Assets/Gallery/tests/index.test.js +0 -10
  121. package/containers/Assets/Gallery/tests/reducer.test.js +0 -95
  122. package/containers/Assets/Gallery/tests/sagas.test.js +0 -15
  123. package/containers/Assets/Gallery/tests/selectors.test.js +0 -10
  124. package/containers/Cap/actions.js +0 -52
  125. package/containers/Cap/constants.js +0 -22
  126. package/containers/Cap/index.js +0 -369
  127. package/containers/Cap/messsages.js +0 -63
  128. package/containers/Cap/reducer.js +0 -108
  129. package/containers/Cap/sagas.js +0 -143
  130. package/containers/Cap/selectors.js +0 -54
  131. package/containers/Cap/tests/index.test.js +0 -16
  132. package/containers/Cap/tests/selectors.test.js +0 -28
  133. package/containers/Dashboard/actions.js +0 -15
  134. package/containers/Dashboard/constants.js +0 -7
  135. package/containers/Dashboard/index.js +0 -53
  136. package/containers/Dashboard/messages.js +0 -13
  137. package/containers/Dashboard/reducer.js +0 -21
  138. package/containers/Dashboard/sagas.js +0 -11
  139. package/containers/Dashboard/selectors.js +0 -25
  140. package/containers/Dashboard/tests/actions.test.js +0 -18
  141. package/containers/Dashboard/tests/index.test.js +0 -10
  142. package/containers/Dashboard/tests/reducer.test.js +0 -9
  143. package/containers/Dashboard/tests/sagas.test.js +0 -15
  144. package/containers/Dashboard/tests/selectors.test.js +0 -10
  145. package/containers/Ebill/_ebill.scss +0 -5
  146. package/containers/Ebill/actions.js +0 -43
  147. package/containers/Ebill/constants.js +0 -20
  148. package/containers/Ebill/index.js +0 -1273
  149. package/containers/Ebill/messages.js +0 -73
  150. package/containers/Ebill/reducer.js +0 -72
  151. package/containers/Ebill/sagas.js +0 -65
  152. package/containers/Ebill/selectors.js +0 -25
  153. package/containers/Ebill/tests/actions.test.js +0 -18
  154. package/containers/Ebill/tests/index.test.js +0 -10
  155. package/containers/Ebill/tests/reducer.test.js +0 -9
  156. package/containers/Ebill/tests/sagas.test.js +0 -15
  157. package/containers/Ebill/tests/selectors.test.js +0 -10
  158. package/containers/Email/_email.scss +0 -141
  159. package/containers/Email/actions.js +0 -81
  160. package/containers/Email/constants.js +0 -36
  161. package/containers/Email/index.js +0 -3282
  162. package/containers/Email/messages.js +0 -233
  163. package/containers/Email/reducer.js +0 -142
  164. package/containers/Email/sagas.js +0 -136
  165. package/containers/Email/selectors.js +0 -31
  166. package/containers/Email/tests/actions.test.js +0 -18
  167. package/containers/Email/tests/index.test.js +0 -10
  168. package/containers/Email/tests/reducer.test.js +0 -9
  169. package/containers/Email/tests/sagas.test.js +0 -15
  170. package/containers/Email/tests/selectors.test.js +0 -10
  171. package/containers/LanguageProvider/actions.js +0 -17
  172. package/containers/LanguageProvider/constants.js +0 -8
  173. package/containers/LanguageProvider/index.js +0 -44
  174. package/containers/LanguageProvider/reducer.js +0 -30
  175. package/containers/LanguageProvider/selectors.js +0 -20
  176. package/containers/LanguageProvider/tests/actions.test.js +0 -19
  177. package/containers/LanguageProvider/tests/index.test.js +0 -49
  178. package/containers/LanguageProvider/tests/reducer.test.js +0 -20
  179. package/containers/LanguageProvider/tests/selectors.test.js +0 -15
  180. package/containers/Line/Create/_lineCreate.scss +0 -43
  181. package/containers/Line/Create/actions.js +0 -90
  182. package/containers/Line/Create/constants.js +0 -39
  183. package/containers/Line/Create/index.js +0 -815
  184. package/containers/Line/Create/messages.js +0 -173
  185. package/containers/Line/Create/reducer.js +0 -99
  186. package/containers/Line/Create/sagas.js +0 -107
  187. package/containers/Line/Create/selectors.js +0 -36
  188. package/containers/Line/Edit/_lineEdit.scss +0 -25
  189. package/containers/Line/Edit/actions.js +0 -72
  190. package/containers/Line/Edit/constants.js +0 -27
  191. package/containers/Line/Edit/index.js +0 -1043
  192. package/containers/Line/Edit/messages.js +0 -157
  193. package/containers/Line/Edit/reducer.js +0 -83
  194. package/containers/Line/Edit/sagas.js +0 -81
  195. package/containers/Line/Edit/selectors.js +0 -29
  196. package/containers/Line/Edit/tests/actions.test.js +0 -18
  197. package/containers/Line/Edit/tests/index.test.js +0 -10
  198. package/containers/Line/Edit/tests/reducer.test.js +0 -9
  199. package/containers/Line/Edit/tests/sagas.test.js +0 -15
  200. package/containers/Line/Edit/tests/selectors.test.js +0 -10
  201. package/containers/Login/assets/images/capillary_logo.png +0 -0
  202. package/containers/Login/components/LoginForm/index.js +0 -58
  203. package/containers/Login/components/LoginForm/messages.js +0 -21
  204. package/containers/Login/components/LoginForm/tests/index.test.js +0 -10
  205. package/containers/Login/index.js +0 -105
  206. package/containers/Login/messages.js +0 -21
  207. package/containers/Login/selectors.js +0 -25
  208. package/containers/Login/tests/index.test.js +0 -10
  209. package/containers/Login/tests/sagas.test.js +0 -15
  210. package/containers/Login/tests/selectors.test.js +0 -10
  211. package/containers/MobilePush/Create/_mobilePushCreate.scss +0 -25
  212. package/containers/MobilePush/Create/actions.js +0 -46
  213. package/containers/MobilePush/Create/constants.js +0 -23
  214. package/containers/MobilePush/Create/index.js +0 -2248
  215. package/containers/MobilePush/Create/messages.js +0 -233
  216. package/containers/MobilePush/Create/reducer.js +0 -70
  217. package/containers/MobilePush/Create/sagas.js +0 -60
  218. package/containers/MobilePush/Create/selectors.js +0 -28
  219. package/containers/MobilePush/Create/tests/actions.test.js +0 -18
  220. package/containers/MobilePush/Create/tests/index.test.js +0 -10
  221. package/containers/MobilePush/Create/tests/reducer.test.js +0 -9
  222. package/containers/MobilePush/Create/tests/sagas.test.js +0 -15
  223. package/containers/MobilePush/Create/tests/selectors.test.js +0 -10
  224. package/containers/MobilePush/Edit/_mobilePushCreate.scss +0 -25
  225. package/containers/MobilePush/Edit/actions.js +0 -84
  226. package/containers/MobilePush/Edit/constants.js +0 -35
  227. package/containers/MobilePush/Edit/index.js +0 -2536
  228. package/containers/MobilePush/Edit/messages.js +0 -249
  229. package/containers/MobilePush/Edit/reducer.js +0 -112
  230. package/containers/MobilePush/Edit/sagas.js +0 -118
  231. package/containers/MobilePush/Edit/selectors.js +0 -29
  232. package/containers/MobilePush/Edit/tests/actions.test.js +0 -18
  233. package/containers/MobilePush/Edit/tests/index.test.js +0 -10
  234. package/containers/MobilePush/Edit/tests/reducer.test.js +0 -9
  235. package/containers/MobilePush/Edit/tests/sagas.test.js +0 -15
  236. package/containers/MobilePush/Edit/tests/selectors.test.js +0 -10
  237. package/containers/NotFoundPage/index.js +0 -25
  238. package/containers/NotFoundPage/messages.js +0 -13
  239. package/containers/NotFoundPage/tests/index.test.js +0 -17
  240. package/containers/Sms/Create/_smsCreate.scss +0 -45
  241. package/containers/Sms/Create/actions.js +0 -27
  242. package/containers/Sms/Create/constants.js +0 -16
  243. package/containers/Sms/Create/index.js +0 -1486
  244. package/containers/Sms/Create/messages.js +0 -85
  245. package/containers/Sms/Create/reducer.js +0 -41
  246. package/containers/Sms/Create/sagas.js +0 -36
  247. package/containers/Sms/Create/selectors.js +0 -28
  248. package/containers/Sms/Create/tests/actions.test.js +0 -18
  249. package/containers/Sms/Create/tests/index.test.js +0 -10
  250. package/containers/Sms/Create/tests/reducer.test.js +0 -9
  251. package/containers/Sms/Create/tests/sagas.test.js +0 -15
  252. package/containers/Sms/Create/tests/selectors.test.js +0 -10
  253. package/containers/Sms/Edit/actions.js +0 -40
  254. package/containers/Sms/Edit/constants.js +0 -17
  255. package/containers/Sms/Edit/index.js +0 -1470
  256. package/containers/Sms/Edit/messages.js +0 -89
  257. package/containers/Sms/Edit/reducer.js +0 -50
  258. package/containers/Sms/Edit/sagas.js +0 -52
  259. package/containers/Sms/Edit/selectors.js +0 -32
  260. package/containers/Sms/Edit/tests/actions.test.js +0 -18
  261. package/containers/Sms/Edit/tests/index.test.js +0 -10
  262. package/containers/Sms/Edit/tests/reducer.test.js +0 -9
  263. package/containers/Sms/Edit/tests/sagas.test.js +0 -15
  264. package/containers/Sms/Edit/tests/selectors.test.js +0 -10
  265. package/containers/TagList/_tagList.scss +0 -8
  266. package/containers/TagList/actions.js +0 -15
  267. package/containers/TagList/constants.js +0 -7
  268. package/containers/TagList/index.js +0 -234
  269. package/containers/TagList/messages.js +0 -13
  270. package/containers/TagList/reducer.js +0 -23
  271. package/containers/TagList/sagas.js +0 -11
  272. package/containers/TagList/selectors.js +0 -25
  273. package/containers/TagList/tests/actions.test.js +0 -18
  274. package/containers/TagList/tests/index.test.js +0 -10
  275. package/containers/TagList/tests/reducer.test.js +0 -9
  276. package/containers/TagList/tests/sagas.test.js +0 -15
  277. package/containers/TagList/tests/selectors.test.js +0 -10
  278. package/containers/Templates/_templates.scss +0 -333
  279. package/containers/Templates/actions.js +0 -108
  280. package/containers/Templates/constants.js +0 -45
  281. package/containers/Templates/index.js +0 -1582
  282. package/containers/Templates/messages.js +0 -233
  283. package/containers/Templates/reducer.js +0 -141
  284. package/containers/Templates/sagas.js +0 -168
  285. package/containers/Templates/selectors.js +0 -28
  286. package/containers/Templates/tests/actions.test.js +0 -18
  287. package/containers/Templates/tests/index.test.js +0 -10
  288. package/containers/Templates/tests/reducer.test.js +0 -9
  289. package/containers/Templates/tests/sagas.test.js +0 -15
  290. package/containers/Templates/tests/selectors.test.js +0 -10
  291. package/containers/TestPage/constants.js +0 -7
  292. package/containers/TestPage/index.js +0 -31
  293. package/containers/TestPage/messages.js +0 -13
  294. package/containers/TestPage/reducer.js +0 -21
  295. package/containers/TestPage/sagas.js +0 -11
  296. package/containers/Testv2/actions.js +0 -15
  297. package/containers/Testv2/constants.js +0 -7
  298. package/containers/Testv2/index.js +0 -45
  299. package/containers/Testv2/messages.js +0 -13
  300. package/containers/Testv2/reducer.js +0 -23
  301. package/containers/Testv2/sagas.js +0 -11
  302. package/containers/Testv2/selectors.js +0 -25
  303. package/containers/Testv2/tests/actions.test.js +0 -18
  304. package/containers/Testv2/tests/index.test.js +0 -10
  305. package/containers/Testv2/tests/reducer.test.js +0 -9
  306. package/containers/Testv2/tests/sagas.test.js +0 -15
  307. package/containers/Testv2/tests/selectors.test.js +0 -10
  308. package/containers/WeChat/_wechat.scss +0 -8
  309. package/containers/WeChat/actions.js +0 -46
  310. package/containers/WeChat/constants.js +0 -28
  311. package/containers/WeChat/index.js +0 -1618
  312. package/containers/WeChat/messages.js +0 -73
  313. package/containers/WeChat/reducer.js +0 -74
  314. package/containers/WeChat/sagas.js +0 -86
  315. package/containers/WeChat/selectors.js +0 -25
  316. package/containers/WeChat/tests/actions.test.js +0 -18
  317. package/containers/WeChat/tests/index.test.js +0 -10
  318. package/containers/WeChat/tests/reducer.test.js +0 -9
  319. package/containers/WeChat/tests/sagas.test.js +0 -15
  320. package/containers/WeChat/tests/selectors.test.js +0 -10
  321. package/favicon.ico +0 -0
  322. package/global-styles.js +0 -15
  323. package/gtm/eventDefinitions.js +0 -17
  324. package/gtm/eventDefinitionsMap.js +0 -12
  325. package/gtm/tests/events.test.js +0 -3
  326. package/i18n.js +0 -39
  327. package/index.html +0 -42
  328. package/initialState.js +0 -38
  329. package/reducers.js +0 -65
  330. package/routes.js +0 -562
  331. package/schemas/user.js +0 -8
  332. package/services/api.js +0 -306
  333. package/services/localStorageApi.js +0 -33
  334. package/store.js +0 -61
  335. package/styles/_variables.scss +0 -53
  336. package/styles/abstracts/_functions.scss +0 -1
  337. package/styles/abstracts/_mixins.scss +0 -0
  338. package/styles/abstracts/_module.scss +0 -6
  339. package/styles/abstracts/_placeholders.scss +0 -0
  340. package/styles/abstracts/_variables.scss +0 -34
  341. package/styles/base/_animations.scss +0 -0
  342. package/styles/base/_base.scss +0 -64
  343. package/styles/base/_module.scss +0 -5
  344. package/styles/base/_reset.scss +0 -0
  345. package/styles/base/_typography.scss +0 -0
  346. package/styles/components/_module.scss +0 -11
  347. package/styles/components/autocompletebox/_module.scss +0 -60
  348. package/styles/components/breadcrumbs/_breadcrumbs.scss +0 -14
  349. package/styles/components/common/_accordianDropdown.scss +0 -35
  350. package/styles/components/common/_message.scss +0 -3
  351. package/styles/components/dimension/_dimension.scss +0 -77
  352. package/styles/components/filters/_dateFilter.scss +0 -68
  353. package/styles/components/filters/_dimensionFilter.scss +0 -66
  354. package/styles/components/footer/_footer.scss +0 -13
  355. package/styles/components/login/_loginForm.scss +0 -0
  356. package/styles/components/navigation/_leftnav.scss +0 -213
  357. package/styles/components/navigation/_topnav.scss +0 -52
  358. package/styles/containers/_module.scss +0 -3
  359. package/styles/containers/layout/_layoutPage.scss +0 -169
  360. package/styles/containers/login/_loginPage.scss +0 -60
  361. package/styles/containers/reports/_reportPage.scss +0 -128
  362. package/styles/layout/_footer.scss +0 -0
  363. package/styles/layout/_forms.scss +0 -3
  364. package/styles/layout/_grid.scss +0 -3
  365. package/styles/layout/_header.scss +0 -25
  366. package/styles/layout/_module.scss +0 -1
  367. package/styles/layout/_navigation.scss +0 -0
  368. package/styles/layout/_sidebar.scss +0 -0
  369. package/styles/main.scss +0 -6
  370. package/styles/vendor/_module.scss +0 -0
  371. package/styles/vendor/semantic/dist/components/accordion.css +0 -311
  372. package/styles/vendor/semantic/dist/components/accordion.js +0 -610
  373. package/styles/vendor/semantic/dist/components/accordion.min.css +0 -9
  374. package/styles/vendor/semantic/dist/components/accordion.min.js +0 -10
  375. package/styles/vendor/semantic/dist/components/accordion.rtl.css +0 -252
  376. package/styles/vendor/semantic/dist/components/accordion.rtl.min.css +0 -9
  377. package/styles/vendor/semantic/dist/components/ad.css +0 -275
  378. package/styles/vendor/semantic/dist/components/ad.min.css +0 -10
  379. package/styles/vendor/semantic/dist/components/ad.rtl.css +0 -275
  380. package/styles/vendor/semantic/dist/components/ad.rtl.min.css +0 -10
  381. package/styles/vendor/semantic/dist/components/api.js +0 -1167
  382. package/styles/vendor/semantic/dist/components/api.min.js +0 -10
  383. package/styles/vendor/semantic/dist/components/breadcrumb.css +0 -124
  384. package/styles/vendor/semantic/dist/components/breadcrumb.min.css +0 -9
  385. package/styles/vendor/semantic/dist/components/breadcrumb.rtl.css +0 -124
  386. package/styles/vendor/semantic/dist/components/breadcrumb.rtl.min.css +0 -9
  387. package/styles/vendor/semantic/dist/components/button.css +0 -3557
  388. package/styles/vendor/semantic/dist/components/button.min.css +0 -9
  389. package/styles/vendor/semantic/dist/components/button.rtl.css +0 -3450
  390. package/styles/vendor/semantic/dist/components/button.rtl.min.css +0 -9
  391. package/styles/vendor/semantic/dist/components/card.css +0 -964
  392. package/styles/vendor/semantic/dist/components/card.min.css +0 -9
  393. package/styles/vendor/semantic/dist/components/card.rtl.css +0 -964
  394. package/styles/vendor/semantic/dist/components/card.rtl.min.css +0 -9
  395. package/styles/vendor/semantic/dist/components/checkbox.css +0 -625
  396. package/styles/vendor/semantic/dist/components/checkbox.js +0 -831
  397. package/styles/vendor/semantic/dist/components/checkbox.min.css +0 -9
  398. package/styles/vendor/semantic/dist/components/checkbox.min.js +0 -10
  399. package/styles/vendor/semantic/dist/components/checkbox.rtl.css +0 -625
  400. package/styles/vendor/semantic/dist/components/checkbox.rtl.min.css +0 -9
  401. package/styles/vendor/semantic/dist/components/comment.css +0 -270
  402. package/styles/vendor/semantic/dist/components/comment.min.css +0 -9
  403. package/styles/vendor/semantic/dist/components/comment.rtl.css +0 -270
  404. package/styles/vendor/semantic/dist/components/comment.rtl.min.css +0 -9
  405. package/styles/vendor/semantic/dist/components/container.css +0 -147
  406. package/styles/vendor/semantic/dist/components/container.min.css +0 -9
  407. package/styles/vendor/semantic/dist/components/container.rtl.css +0 -147
  408. package/styles/vendor/semantic/dist/components/container.rtl.min.css +0 -9
  409. package/styles/vendor/semantic/dist/components/dimmer.css +0 -200
  410. package/styles/vendor/semantic/dist/components/dimmer.js +0 -708
  411. package/styles/vendor/semantic/dist/components/dimmer.min.css +0 -9
  412. package/styles/vendor/semantic/dist/components/dimmer.min.js +0 -10
  413. package/styles/vendor/semantic/dist/components/dimmer.rtl.css +0 -200
  414. package/styles/vendor/semantic/dist/components/dimmer.rtl.min.css +0 -9
  415. package/styles/vendor/semantic/dist/components/divider.css +0 -260
  416. package/styles/vendor/semantic/dist/components/divider.min.css +0 -9
  417. package/styles/vendor/semantic/dist/components/divider.rtl.css +0 -260
  418. package/styles/vendor/semantic/dist/components/divider.rtl.min.css +0 -9
  419. package/styles/vendor/semantic/dist/components/dropdown.css +0 -1487
  420. package/styles/vendor/semantic/dist/components/dropdown.js +0 -3741
  421. package/styles/vendor/semantic/dist/components/dropdown.min.css +0 -9
  422. package/styles/vendor/semantic/dist/components/dropdown.min.js +0 -11
  423. package/styles/vendor/semantic/dist/components/dropdown.rtl.css +0 -1417
  424. package/styles/vendor/semantic/dist/components/dropdown.rtl.min.css +0 -9
  425. package/styles/vendor/semantic/dist/components/embed.css +0 -166
  426. package/styles/vendor/semantic/dist/components/embed.js +0 -696
  427. package/styles/vendor/semantic/dist/components/embed.min.css +0 -9
  428. package/styles/vendor/semantic/dist/components/embed.min.js +0 -10
  429. package/styles/vendor/semantic/dist/components/embed.rtl.css +0 -166
  430. package/styles/vendor/semantic/dist/components/embed.rtl.min.css +0 -9
  431. package/styles/vendor/semantic/dist/components/feed.css +0 -296
  432. package/styles/vendor/semantic/dist/components/feed.min.css +0 -9
  433. package/styles/vendor/semantic/dist/components/feed.rtl.css +0 -296
  434. package/styles/vendor/semantic/dist/components/feed.rtl.min.css +0 -9
  435. package/styles/vendor/semantic/dist/components/flag.css +0 -1031
  436. package/styles/vendor/semantic/dist/components/flag.min.css +0 -9
  437. package/styles/vendor/semantic/dist/components/flag.rtl.css +0 -1031
  438. package/styles/vendor/semantic/dist/components/flag.rtl.min.css +0 -9
  439. package/styles/vendor/semantic/dist/components/form.css +0 -1067
  440. package/styles/vendor/semantic/dist/components/form.js +0 -1558
  441. package/styles/vendor/semantic/dist/components/form.min.css +0 -9
  442. package/styles/vendor/semantic/dist/components/form.min.js +0 -10
  443. package/styles/vendor/semantic/dist/components/form.rtl.css +0 -1067
  444. package/styles/vendor/semantic/dist/components/form.rtl.min.css +0 -9
  445. package/styles/vendor/semantic/dist/components/grid.css +0 -2002
  446. package/styles/vendor/semantic/dist/components/grid.min.css +0 -9
  447. package/styles/vendor/semantic/dist/components/grid.rtl.css +0 -2002
  448. package/styles/vendor/semantic/dist/components/grid.rtl.min.css +0 -9
  449. package/styles/vendor/semantic/dist/components/header.css +0 -721
  450. package/styles/vendor/semantic/dist/components/header.min.css +0 -9
  451. package/styles/vendor/semantic/dist/components/header.rtl.css +0 -721
  452. package/styles/vendor/semantic/dist/components/header.rtl.min.css +0 -9
  453. package/styles/vendor/semantic/dist/components/icon.css +0 -3142
  454. package/styles/vendor/semantic/dist/components/icon.min.css +0 -9
  455. package/styles/vendor/semantic/dist/components/icon.rtl.css +0 -3142
  456. package/styles/vendor/semantic/dist/components/icon.rtl.min.css +0 -9
  457. package/styles/vendor/semantic/dist/components/image.css +0 -306
  458. package/styles/vendor/semantic/dist/components/image.min.css +0 -9
  459. package/styles/vendor/semantic/dist/components/image.rtl.css +0 -306
  460. package/styles/vendor/semantic/dist/components/image.rtl.min.css +0 -9
  461. package/styles/vendor/semantic/dist/components/input.css +0 -536
  462. package/styles/vendor/semantic/dist/components/input.min.css +0 -9
  463. package/styles/vendor/semantic/dist/components/input.rtl.css +0 -510
  464. package/styles/vendor/semantic/dist/components/input.rtl.min.css +0 -9
  465. package/styles/vendor/semantic/dist/components/item.css +0 -475
  466. package/styles/vendor/semantic/dist/components/item.min.css +0 -9
  467. package/styles/vendor/semantic/dist/components/item.rtl.css +0 -475
  468. package/styles/vendor/semantic/dist/components/item.rtl.min.css +0 -9
  469. package/styles/vendor/semantic/dist/components/label.css +0 -1320
  470. package/styles/vendor/semantic/dist/components/label.min.css +0 -9
  471. package/styles/vendor/semantic/dist/components/label.rtl.css +0 -1307
  472. package/styles/vendor/semantic/dist/components/label.rtl.min.css +0 -9
  473. package/styles/vendor/semantic/dist/components/list.css +0 -951
  474. package/styles/vendor/semantic/dist/components/list.min.css +0 -9
  475. package/styles/vendor/semantic/dist/components/list.rtl.css +0 -951
  476. package/styles/vendor/semantic/dist/components/list.rtl.min.css +0 -9
  477. package/styles/vendor/semantic/dist/components/loader.css +0 -347
  478. package/styles/vendor/semantic/dist/components/loader.min.css +0 -9
  479. package/styles/vendor/semantic/dist/components/loader.rtl.css +0 -347
  480. package/styles/vendor/semantic/dist/components/loader.rtl.min.css +0 -9
  481. package/styles/vendor/semantic/dist/components/menu.css +0 -2020
  482. package/styles/vendor/semantic/dist/components/menu.min.css +0 -1
  483. package/styles/vendor/semantic/dist/components/menu.rtl.css +0 -2002
  484. package/styles/vendor/semantic/dist/components/menu.rtl.min.css +0 -1
  485. package/styles/vendor/semantic/dist/components/message.css +0 -477
  486. package/styles/vendor/semantic/dist/components/message.min.css +0 -9
  487. package/styles/vendor/semantic/dist/components/message.rtl.css +0 -477
  488. package/styles/vendor/semantic/dist/components/message.rtl.min.css +0 -9
  489. package/styles/vendor/semantic/dist/components/modal.css +0 -512
  490. package/styles/vendor/semantic/dist/components/modal.js +0 -913
  491. package/styles/vendor/semantic/dist/components/modal.min.css +0 -9
  492. package/styles/vendor/semantic/dist/components/modal.min.js +0 -10
  493. package/styles/vendor/semantic/dist/components/modal.rtl.css +0 -499
  494. package/styles/vendor/semantic/dist/components/modal.rtl.min.css +0 -9
  495. package/styles/vendor/semantic/dist/components/nag.css +0 -147
  496. package/styles/vendor/semantic/dist/components/nag.js +0 -507
  497. package/styles/vendor/semantic/dist/components/nag.min.css +0 -9
  498. package/styles/vendor/semantic/dist/components/nag.min.js +0 -10
  499. package/styles/vendor/semantic/dist/components/nag.rtl.css +0 -147
  500. package/styles/vendor/semantic/dist/components/nag.rtl.min.css +0 -9
  501. package/styles/vendor/semantic/dist/components/popup.css +0 -733
  502. package/styles/vendor/semantic/dist/components/popup.js +0 -1475
  503. package/styles/vendor/semantic/dist/components/popup.min.css +0 -9
  504. package/styles/vendor/semantic/dist/components/popup.min.js +0 -10
  505. package/styles/vendor/semantic/dist/components/popup.rtl.css +0 -727
  506. package/styles/vendor/semantic/dist/components/popup.rtl.min.css +0 -9
  507. package/styles/vendor/semantic/dist/components/progress.css +0 -516
  508. package/styles/vendor/semantic/dist/components/progress.js +0 -931
  509. package/styles/vendor/semantic/dist/components/progress.min.css +0 -9
  510. package/styles/vendor/semantic/dist/components/progress.min.js +0 -10
  511. package/styles/vendor/semantic/dist/components/progress.rtl.css +0 -516
  512. package/styles/vendor/semantic/dist/components/progress.rtl.min.css +0 -9
  513. package/styles/vendor/semantic/dist/components/rail.css +0 -152
  514. package/styles/vendor/semantic/dist/components/rail.min.css +0 -9
  515. package/styles/vendor/semantic/dist/components/rail.rtl.css +0 -152
  516. package/styles/vendor/semantic/dist/components/rail.rtl.min.css +0 -9
  517. package/styles/vendor/semantic/dist/components/rating.css +0 -263
  518. package/styles/vendor/semantic/dist/components/rating.js +0 -508
  519. package/styles/vendor/semantic/dist/components/rating.min.css +0 -9
  520. package/styles/vendor/semantic/dist/components/rating.min.js +0 -10
  521. package/styles/vendor/semantic/dist/components/rating.rtl.css +0 -263
  522. package/styles/vendor/semantic/dist/components/rating.rtl.min.css +0 -9
  523. package/styles/vendor/semantic/dist/components/reset.css +0 -424
  524. package/styles/vendor/semantic/dist/components/reset.min.css +0 -9
  525. package/styles/vendor/semantic/dist/components/reset.rtl.css +0 -424
  526. package/styles/vendor/semantic/dist/components/reset.rtl.min.css +0 -9
  527. package/styles/vendor/semantic/dist/components/reveal.css +0 -284
  528. package/styles/vendor/semantic/dist/components/reveal.min.css +0 -9
  529. package/styles/vendor/semantic/dist/components/reveal.rtl.css +0 -284
  530. package/styles/vendor/semantic/dist/components/reveal.rtl.min.css +0 -9
  531. package/styles/vendor/semantic/dist/components/search.css +0 -408
  532. package/styles/vendor/semantic/dist/components/search.js +0 -1407
  533. package/styles/vendor/semantic/dist/components/search.min.css +0 -9
  534. package/styles/vendor/semantic/dist/components/search.min.js +0 -10
  535. package/styles/vendor/semantic/dist/components/search.rtl.css +0 -408
  536. package/styles/vendor/semantic/dist/components/search.rtl.min.css +0 -9
  537. package/styles/vendor/semantic/dist/components/segment.css +0 -791
  538. package/styles/vendor/semantic/dist/components/segment.min.css +0 -9
  539. package/styles/vendor/semantic/dist/components/segment.rtl.css +0 -791
  540. package/styles/vendor/semantic/dist/components/segment.rtl.min.css +0 -9
  541. package/styles/vendor/semantic/dist/components/shape.css +0 -157
  542. package/styles/vendor/semantic/dist/components/shape.js +0 -921
  543. package/styles/vendor/semantic/dist/components/shape.min.css +0 -9
  544. package/styles/vendor/semantic/dist/components/shape.min.js +0 -10
  545. package/styles/vendor/semantic/dist/components/shape.rtl.css +0 -157
  546. package/styles/vendor/semantic/dist/components/shape.rtl.min.css +0 -9
  547. package/styles/vendor/semantic/dist/components/sidebar.css +0 -638
  548. package/styles/vendor/semantic/dist/components/sidebar.js +0 -1036
  549. package/styles/vendor/semantic/dist/components/sidebar.min.css +0 -9
  550. package/styles/vendor/semantic/dist/components/sidebar.min.js +0 -10
  551. package/styles/vendor/semantic/dist/components/sidebar.rtl.css +0 -638
  552. package/styles/vendor/semantic/dist/components/sidebar.rtl.min.css +0 -9
  553. package/styles/vendor/semantic/dist/components/site.css +0 -154
  554. package/styles/vendor/semantic/dist/components/site.js +0 -487
  555. package/styles/vendor/semantic/dist/components/site.min.css +0 -9
  556. package/styles/vendor/semantic/dist/components/site.min.js +0 -10
  557. package/styles/vendor/semantic/dist/components/site.rtl.css +0 -154
  558. package/styles/vendor/semantic/dist/components/site.rtl.min.css +0 -9
  559. package/styles/vendor/semantic/dist/components/state.js +0 -708
  560. package/styles/vendor/semantic/dist/components/state.min.js +0 -10
  561. package/styles/vendor/semantic/dist/components/statistic.css +0 -569
  562. package/styles/vendor/semantic/dist/components/statistic.min.css +0 -9
  563. package/styles/vendor/semantic/dist/components/statistic.rtl.css +0 -569
  564. package/styles/vendor/semantic/dist/components/statistic.rtl.min.css +0 -9
  565. package/styles/vendor/semantic/dist/components/step.css +0 -623
  566. package/styles/vendor/semantic/dist/components/step.min.css +0 -9
  567. package/styles/vendor/semantic/dist/components/step.rtl.css +0 -623
  568. package/styles/vendor/semantic/dist/components/step.rtl.min.css +0 -9
  569. package/styles/vendor/semantic/dist/components/sticky.css +0 -78
  570. package/styles/vendor/semantic/dist/components/sticky.js +0 -942
  571. package/styles/vendor/semantic/dist/components/sticky.min.css +0 -9
  572. package/styles/vendor/semantic/dist/components/sticky.min.js +0 -10
  573. package/styles/vendor/semantic/dist/components/sticky.rtl.css +0 -78
  574. package/styles/vendor/semantic/dist/components/sticky.rtl.min.css +0 -9
  575. package/styles/vendor/semantic/dist/components/tab.css +0 -91
  576. package/styles/vendor/semantic/dist/components/tab.js +0 -946
  577. package/styles/vendor/semantic/dist/components/tab.min.css +0 -9
  578. package/styles/vendor/semantic/dist/components/tab.min.js +0 -10
  579. package/styles/vendor/semantic/dist/components/tab.rtl.css +0 -91
  580. package/styles/vendor/semantic/dist/components/tab.rtl.min.css +0 -9
  581. package/styles/vendor/semantic/dist/components/table.css +0 -1108
  582. package/styles/vendor/semantic/dist/components/table.min.css +0 -9
  583. package/styles/vendor/semantic/dist/components/table.rtl.css +0 -1108
  584. package/styles/vendor/semantic/dist/components/table.rtl.min.css +0 -9
  585. package/styles/vendor/semantic/dist/components/transition.css +0 -1964
  586. package/styles/vendor/semantic/dist/components/transition.js +0 -1095
  587. package/styles/vendor/semantic/dist/components/transition.min.css +0 -9
  588. package/styles/vendor/semantic/dist/components/transition.min.js +0 -10
  589. package/styles/vendor/semantic/dist/components/transition.rtl.css +0 -1964
  590. package/styles/vendor/semantic/dist/components/transition.rtl.min.css +0 -9
  591. package/styles/vendor/semantic/dist/components/visibility.js +0 -1283
  592. package/styles/vendor/semantic/dist/components/visibility.min.js +0 -10
  593. package/styles/vendor/semantic/dist/semantic.css +0 -36950
  594. package/styles/vendor/semantic/dist/semantic.js +0 -22500
  595. package/styles/vendor/semantic/dist/semantic.min.css +0 -364
  596. package/styles/vendor/semantic/dist/semantic.min.js +0 -19
  597. package/styles/vendor/semantic/dist/semantic.rtl.css +0 -36579
  598. package/styles/vendor/semantic/dist/semantic.rtl.min.css +0 -11
  599. package/styles/vendor/semantic/dist/themes/basic/assets/fonts/icons.eot +0 -0
  600. package/styles/vendor/semantic/dist/themes/basic/assets/fonts/icons.svg +0 -450
  601. package/styles/vendor/semantic/dist/themes/basic/assets/fonts/icons.ttf +0 -0
  602. package/styles/vendor/semantic/dist/themes/basic/assets/fonts/icons.woff +0 -0
  603. package/styles/vendor/semantic/dist/themes/default/assets/fonts/icons.eot +0 -0
  604. package/styles/vendor/semantic/dist/themes/default/assets/fonts/icons.svg +0 -685
  605. package/styles/vendor/semantic/dist/themes/default/assets/fonts/icons.ttf +0 -0
  606. package/styles/vendor/semantic/dist/themes/default/assets/fonts/icons.woff +0 -0
  607. package/styles/vendor/semantic/dist/themes/default/assets/fonts/icons.woff2 +0 -0
  608. package/styles/vendor/semantic/dist/themes/default/assets/images/flags.png +0 -0
  609. package/styles/vendor/semantic/dist/themes/github/assets/fonts/octicons-local.ttf +0 -0
  610. package/styles/vendor/semantic/dist/themes/github/assets/fonts/octicons.svg +0 -200
  611. package/styles/vendor/semantic/dist/themes/github/assets/fonts/octicons.ttf +0 -0
  612. package/styles/vendor/semantic/dist/themes/github/assets/fonts/octicons.woff +0 -0
  613. package/styles/vendor/semantic/dist/themes/material/assets/fonts/icons.eot +0 -0
  614. package/styles/vendor/semantic/dist/themes/material/assets/fonts/icons.svg +0 -2373
  615. package/styles/vendor/semantic/dist/themes/material/assets/fonts/icons.ttf +0 -0
  616. package/styles/vendor/semantic/dist/themes/material/assets/fonts/icons.woff +0 -0
  617. package/styles/vendor/semantic/gulpfile.js +0 -72
  618. package/styles/vendor/semantic/src/definitions/behaviors/api.js +0 -1167
  619. package/styles/vendor/semantic/src/definitions/behaviors/colorize.js +0 -280
  620. package/styles/vendor/semantic/src/definitions/behaviors/form.js +0 -1558
  621. package/styles/vendor/semantic/src/definitions/behaviors/state.js +0 -708
  622. package/styles/vendor/semantic/src/definitions/behaviors/visibility.js +0 -1283
  623. package/styles/vendor/semantic/src/definitions/behaviors/visit.js +0 -525
  624. package/styles/vendor/semantic/src/definitions/collections/breadcrumb.less +0 -122
  625. package/styles/vendor/semantic/src/definitions/collections/form.less +0 -1053
  626. package/styles/vendor/semantic/src/definitions/collections/grid.less +0 -1920
  627. package/styles/vendor/semantic/src/definitions/collections/menu.less +0 -1965
  628. package/styles/vendor/semantic/src/definitions/collections/message.less +0 -478
  629. package/styles/vendor/semantic/src/definitions/collections/table.less +0 -1114
  630. package/styles/vendor/semantic/src/definitions/elements/button.less +0 -3427
  631. package/styles/vendor/semantic/src/definitions/elements/container.less +0 -143
  632. package/styles/vendor/semantic/src/definitions/elements/divider.less +0 -255
  633. package/styles/vendor/semantic/src/definitions/elements/flag.less +0 -52
  634. package/styles/vendor/semantic/src/definitions/elements/header.less +0 -708
  635. package/styles/vendor/semantic/src/definitions/elements/icon.less +0 -477
  636. package/styles/vendor/semantic/src/definitions/elements/image.less +0 -324
  637. package/styles/vendor/semantic/src/definitions/elements/input.less +0 -507
  638. package/styles/vendor/semantic/src/definitions/elements/label.less +0 -1257
  639. package/styles/vendor/semantic/src/definitions/elements/list.less +0 -951
  640. package/styles/vendor/semantic/src/definitions/elements/loader.less +0 -332
  641. package/styles/vendor/semantic/src/definitions/elements/rail.less +0 -154
  642. package/styles/vendor/semantic/src/definitions/elements/reveal.less +0 -265
  643. package/styles/vendor/semantic/src/definitions/elements/segment.less +0 -768
  644. package/styles/vendor/semantic/src/definitions/elements/step.less +0 -562
  645. package/styles/vendor/semantic/src/definitions/globals/reset.less +0 -40
  646. package/styles/vendor/semantic/src/definitions/globals/site.js +0 -487
  647. package/styles/vendor/semantic/src/definitions/globals/site.less +0 -166
  648. package/styles/vendor/semantic/src/definitions/modules/accordion.js +0 -610
  649. package/styles/vendor/semantic/src/definitions/modules/accordion.less +0 -219
  650. package/styles/vendor/semantic/src/definitions/modules/checkbox.js +0 -831
  651. package/styles/vendor/semantic/src/definitions/modules/checkbox.less +0 -598
  652. package/styles/vendor/semantic/src/definitions/modules/dimmer.js +0 -708
  653. package/styles/vendor/semantic/src/definitions/modules/dimmer.less +0 -189
  654. package/styles/vendor/semantic/src/definitions/modules/dropdown.js +0 -3741
  655. package/styles/vendor/semantic/src/definitions/modules/dropdown.less +0 -1352
  656. package/styles/vendor/semantic/src/definitions/modules/embed.js +0 -696
  657. package/styles/vendor/semantic/src/definitions/modules/embed.less +0 -163
  658. package/styles/vendor/semantic/src/definitions/modules/modal.js +0 -913
  659. package/styles/vendor/semantic/src/definitions/modules/modal.less +0 -484
  660. package/styles/vendor/semantic/src/definitions/modules/nag.js +0 -507
  661. package/styles/vendor/semantic/src/definitions/modules/nag.less +0 -158
  662. package/styles/vendor/semantic/src/definitions/modules/popup.js +0 -1475
  663. package/styles/vendor/semantic/src/definitions/modules/popup.less +0 -712
  664. package/styles/vendor/semantic/src/definitions/modules/progress.js +0 -931
  665. package/styles/vendor/semantic/src/definitions/modules/progress.less +0 -503
  666. package/styles/vendor/semantic/src/definitions/modules/rating.js +0 -508
  667. package/styles/vendor/semantic/src/definitions/modules/rating.less +0 -191
  668. package/styles/vendor/semantic/src/definitions/modules/search.js +0 -1407
  669. package/styles/vendor/semantic/src/definitions/modules/search.less +0 -417
  670. package/styles/vendor/semantic/src/definitions/modules/shape.js +0 -921
  671. package/styles/vendor/semantic/src/definitions/modules/shape.less +0 -150
  672. package/styles/vendor/semantic/src/definitions/modules/sidebar.js +0 -1036
  673. package/styles/vendor/semantic/src/definitions/modules/sidebar.less +0 -552
  674. package/styles/vendor/semantic/src/definitions/modules/sticky.js +0 -942
  675. package/styles/vendor/semantic/src/definitions/modules/sticky.less +0 -74
  676. package/styles/vendor/semantic/src/definitions/modules/tab.js +0 -946
  677. package/styles/vendor/semantic/src/definitions/modules/tab.less +0 -94
  678. package/styles/vendor/semantic/src/definitions/modules/transition.js +0 -1095
  679. package/styles/vendor/semantic/src/definitions/modules/transition.less +0 -78
  680. package/styles/vendor/semantic/src/definitions/views/ad.less +0 -268
  681. package/styles/vendor/semantic/src/definitions/views/card.less +0 -1059
  682. package/styles/vendor/semantic/src/definitions/views/comment.less +0 -269
  683. package/styles/vendor/semantic/src/definitions/views/feed.less +0 -278
  684. package/styles/vendor/semantic/src/definitions/views/item.less +0 -464
  685. package/styles/vendor/semantic/src/definitions/views/statistic.less +0 -557
  686. package/styles/vendor/semantic/src/semantic.less +0 -66
  687. package/styles/vendor/semantic/src/site/collections/breadcrumb.overrides +0 -3
  688. package/styles/vendor/semantic/src/site/collections/breadcrumb.variables +0 -3
  689. package/styles/vendor/semantic/src/site/collections/form.overrides +0 -3
  690. package/styles/vendor/semantic/src/site/collections/form.variables +0 -3
  691. package/styles/vendor/semantic/src/site/collections/grid.overrides +0 -3
  692. package/styles/vendor/semantic/src/site/collections/grid.variables +0 -3
  693. package/styles/vendor/semantic/src/site/collections/menu.overrides +0 -24
  694. package/styles/vendor/semantic/src/site/collections/menu.variables +0 -6
  695. package/styles/vendor/semantic/src/site/collections/message.overrides +0 -3
  696. package/styles/vendor/semantic/src/site/collections/message.variables +0 -3
  697. package/styles/vendor/semantic/src/site/collections/table.overrides +0 -3
  698. package/styles/vendor/semantic/src/site/collections/table.variables +0 -3
  699. package/styles/vendor/semantic/src/site/elements/button.overrides +0 -110
  700. package/styles/vendor/semantic/src/site/elements/button.variables +0 -3
  701. package/styles/vendor/semantic/src/site/elements/container.overrides +0 -3
  702. package/styles/vendor/semantic/src/site/elements/container.variables +0 -3
  703. package/styles/vendor/semantic/src/site/elements/divider.overrides +0 -3
  704. package/styles/vendor/semantic/src/site/elements/divider.variables +0 -3
  705. package/styles/vendor/semantic/src/site/elements/flag.overrides +0 -3
  706. package/styles/vendor/semantic/src/site/elements/flag.variables +0 -3
  707. package/styles/vendor/semantic/src/site/elements/header.overrides +0 -3
  708. package/styles/vendor/semantic/src/site/elements/header.variables +0 -3
  709. package/styles/vendor/semantic/src/site/elements/icon.overrides +0 -3
  710. package/styles/vendor/semantic/src/site/elements/icon.variables +0 -3
  711. package/styles/vendor/semantic/src/site/elements/image.overrides +0 -3
  712. package/styles/vendor/semantic/src/site/elements/image.variables +0 -3
  713. package/styles/vendor/semantic/src/site/elements/input.overrides +0 -25
  714. package/styles/vendor/semantic/src/site/elements/input.variables +0 -3
  715. package/styles/vendor/semantic/src/site/elements/label.overrides +0 -18
  716. package/styles/vendor/semantic/src/site/elements/label.variables +0 -3
  717. package/styles/vendor/semantic/src/site/elements/list.overrides +0 -3
  718. package/styles/vendor/semantic/src/site/elements/list.variables +0 -3
  719. package/styles/vendor/semantic/src/site/elements/loader.overrides +0 -3
  720. package/styles/vendor/semantic/src/site/elements/loader.variables +0 -3
  721. package/styles/vendor/semantic/src/site/elements/rail.overrides +0 -3
  722. package/styles/vendor/semantic/src/site/elements/rail.variables +0 -3
  723. package/styles/vendor/semantic/src/site/elements/reveal.overrides +0 -3
  724. package/styles/vendor/semantic/src/site/elements/reveal.variables +0 -3
  725. package/styles/vendor/semantic/src/site/elements/segment.overrides +0 -3
  726. package/styles/vendor/semantic/src/site/elements/segment.variables +0 -3
  727. package/styles/vendor/semantic/src/site/elements/step.overrides +0 -3
  728. package/styles/vendor/semantic/src/site/elements/step.variables +0 -3
  729. package/styles/vendor/semantic/src/site/globals/reset.overrides +0 -3
  730. package/styles/vendor/semantic/src/site/globals/reset.variables +0 -3
  731. package/styles/vendor/semantic/src/site/globals/site.overrides +0 -3
  732. package/styles/vendor/semantic/src/site/globals/site.variables +0 -52
  733. package/styles/vendor/semantic/src/site/modules/accordion.overrides +0 -67
  734. package/styles/vendor/semantic/src/site/modules/accordion.variables +0 -3
  735. package/styles/vendor/semantic/src/site/modules/chatroom.overrides +0 -3
  736. package/styles/vendor/semantic/src/site/modules/chatroom.variables +0 -3
  737. package/styles/vendor/semantic/src/site/modules/checkbox.overrides +0 -3
  738. package/styles/vendor/semantic/src/site/modules/checkbox.variables +0 -3
  739. package/styles/vendor/semantic/src/site/modules/dimmer.overrides +0 -3
  740. package/styles/vendor/semantic/src/site/modules/dimmer.variables +0 -3
  741. package/styles/vendor/semantic/src/site/modules/dropdown.overrides +0 -80
  742. package/styles/vendor/semantic/src/site/modules/dropdown.variables +0 -3
  743. package/styles/vendor/semantic/src/site/modules/embed.overrides +0 -3
  744. package/styles/vendor/semantic/src/site/modules/embed.variables +0 -0
  745. package/styles/vendor/semantic/src/site/modules/modal.overrides +0 -13
  746. package/styles/vendor/semantic/src/site/modules/modal.variables +0 -3
  747. package/styles/vendor/semantic/src/site/modules/nag.overrides +0 -3
  748. package/styles/vendor/semantic/src/site/modules/nag.variables +0 -3
  749. package/styles/vendor/semantic/src/site/modules/popup.overrides +0 -3
  750. package/styles/vendor/semantic/src/site/modules/popup.variables +0 -3
  751. package/styles/vendor/semantic/src/site/modules/progress.overrides +0 -3
  752. package/styles/vendor/semantic/src/site/modules/progress.variables +0 -3
  753. package/styles/vendor/semantic/src/site/modules/rating.overrides +0 -3
  754. package/styles/vendor/semantic/src/site/modules/rating.variables +0 -3
  755. package/styles/vendor/semantic/src/site/modules/search.overrides +0 -3
  756. package/styles/vendor/semantic/src/site/modules/search.variables +0 -3
  757. package/styles/vendor/semantic/src/site/modules/shape.overrides +0 -3
  758. package/styles/vendor/semantic/src/site/modules/shape.variables +0 -3
  759. package/styles/vendor/semantic/src/site/modules/sidebar.overrides +0 -3
  760. package/styles/vendor/semantic/src/site/modules/sidebar.variables +0 -3
  761. package/styles/vendor/semantic/src/site/modules/sticky.overrides +0 -3
  762. package/styles/vendor/semantic/src/site/modules/sticky.variables +0 -3
  763. package/styles/vendor/semantic/src/site/modules/tab.overrides +0 -3
  764. package/styles/vendor/semantic/src/site/modules/tab.variables +0 -3
  765. package/styles/vendor/semantic/src/site/modules/transition.overrides +0 -3
  766. package/styles/vendor/semantic/src/site/modules/transition.variables +0 -3
  767. package/styles/vendor/semantic/src/site/views/ad.overrides +0 -3
  768. package/styles/vendor/semantic/src/site/views/ad.variables +0 -3
  769. package/styles/vendor/semantic/src/site/views/card.overrides +0 -3
  770. package/styles/vendor/semantic/src/site/views/card.variables +0 -3
  771. package/styles/vendor/semantic/src/site/views/comment.overrides +0 -3
  772. package/styles/vendor/semantic/src/site/views/comment.variables +0 -3
  773. package/styles/vendor/semantic/src/site/views/feed.overrides +0 -3
  774. package/styles/vendor/semantic/src/site/views/feed.variables +0 -3
  775. package/styles/vendor/semantic/src/site/views/item.overrides +0 -3
  776. package/styles/vendor/semantic/src/site/views/item.variables +0 -3
  777. package/styles/vendor/semantic/src/site/views/statistic.overrides +0 -3
  778. package/styles/vendor/semantic/src/site/views/statistic.variables +0 -3
  779. package/styles/vendor/semantic/src/theme.config +0 -92
  780. package/styles/vendor/semantic/src/theme.less +0 -61
  781. package/styles/vendor/semantic/src/themes/amazon/elements/button.overrides +0 -46
  782. package/styles/vendor/semantic/src/themes/amazon/elements/button.variables +0 -58
  783. package/styles/vendor/semantic/src/themes/amazon/globals/site.variables +0 -43
  784. package/styles/vendor/semantic/src/themes/basic/assets/fonts/icons.eot +0 -0
  785. package/styles/vendor/semantic/src/themes/basic/assets/fonts/icons.svg +0 -450
  786. package/styles/vendor/semantic/src/themes/basic/assets/fonts/icons.ttf +0 -0
  787. package/styles/vendor/semantic/src/themes/basic/assets/fonts/icons.woff +0 -0
  788. package/styles/vendor/semantic/src/themes/basic/collections/table.overrides +0 -4
  789. package/styles/vendor/semantic/src/themes/basic/collections/table.variables +0 -11
  790. package/styles/vendor/semantic/src/themes/basic/elements/button.overrides +0 -4
  791. package/styles/vendor/semantic/src/themes/basic/elements/button.variables +0 -44
  792. package/styles/vendor/semantic/src/themes/basic/elements/icon.overrides +0 -189
  793. package/styles/vendor/semantic/src/themes/basic/elements/icon.variables +0 -12
  794. package/styles/vendor/semantic/src/themes/basic/elements/step.overrides +0 -10
  795. package/styles/vendor/semantic/src/themes/basic/elements/step.variables +0 -18
  796. package/styles/vendor/semantic/src/themes/basic/globals/reset.overrides +0 -5
  797. package/styles/vendor/semantic/src/themes/basic/globals/reset.variables +0 -3
  798. package/styles/vendor/semantic/src/themes/basic/modules/progress.overrides +0 -3
  799. package/styles/vendor/semantic/src/themes/basic/modules/progress.variables +0 -15
  800. package/styles/vendor/semantic/src/themes/basic/views/card.overrides +0 -4
  801. package/styles/vendor/semantic/src/themes/basic/views/card.variables +0 -35
  802. package/styles/vendor/semantic/src/themes/bookish/elements/header.overrides +0 -15
  803. package/styles/vendor/semantic/src/themes/bookish/elements/header.variables +0 -37
  804. package/styles/vendor/semantic/src/themes/bootstrap3/elements/button.overrides +0 -0
  805. package/styles/vendor/semantic/src/themes/bootstrap3/elements/button.variables +0 -63
  806. package/styles/vendor/semantic/src/themes/chubby/collections/form.overrides +0 -16
  807. package/styles/vendor/semantic/src/themes/chubby/collections/form.variables +0 -9
  808. package/styles/vendor/semantic/src/themes/chubby/collections/menu.overrides +0 -0
  809. package/styles/vendor/semantic/src/themes/chubby/collections/menu.variables +0 -40
  810. package/styles/vendor/semantic/src/themes/chubby/elements/button.overrides +0 -21
  811. package/styles/vendor/semantic/src/themes/chubby/elements/button.variables +0 -57
  812. package/styles/vendor/semantic/src/themes/chubby/elements/header.overrides +0 -5
  813. package/styles/vendor/semantic/src/themes/chubby/elements/header.variables +0 -21
  814. package/styles/vendor/semantic/src/themes/chubby/modules/accordion.overrides +0 -7
  815. package/styles/vendor/semantic/src/themes/chubby/modules/accordion.variables +0 -15
  816. package/styles/vendor/semantic/src/themes/chubby/views/comment.overrides +0 -12
  817. package/styles/vendor/semantic/src/themes/chubby/views/comment.variables +0 -46
  818. package/styles/vendor/semantic/src/themes/classic/collections/table.overrides +0 -3
  819. package/styles/vendor/semantic/src/themes/classic/collections/table.variables +0 -14
  820. package/styles/vendor/semantic/src/themes/classic/elements/button.overrides +0 -3
  821. package/styles/vendor/semantic/src/themes/classic/elements/button.variables +0 -96
  822. package/styles/vendor/semantic/src/themes/classic/elements/header.overrides +0 -3
  823. package/styles/vendor/semantic/src/themes/classic/elements/header.variables +0 -12
  824. package/styles/vendor/semantic/src/themes/classic/modules/progress.overrides +0 -3
  825. package/styles/vendor/semantic/src/themes/classic/modules/progress.variables +0 -9
  826. package/styles/vendor/semantic/src/themes/classic/views/card.overrides +0 -98
  827. package/styles/vendor/semantic/src/themes/classic/views/card.variables +0 -22
  828. package/styles/vendor/semantic/src/themes/colored/modules/checkbox.overrides +0 -0
  829. package/styles/vendor/semantic/src/themes/colored/modules/checkbox.variables +0 -29
  830. package/styles/vendor/semantic/src/themes/default/assets/fonts/icons.eot +0 -0
  831. package/styles/vendor/semantic/src/themes/default/assets/fonts/icons.svg +0 -685
  832. package/styles/vendor/semantic/src/themes/default/assets/fonts/icons.ttf +0 -0
  833. package/styles/vendor/semantic/src/themes/default/assets/fonts/icons.woff +0 -0
  834. package/styles/vendor/semantic/src/themes/default/assets/fonts/icons.woff2 +0 -0
  835. package/styles/vendor/semantic/src/themes/default/assets/images/flags.png +0 -0
  836. package/styles/vendor/semantic/src/themes/default/collections/breadcrumb.overrides +0 -3
  837. package/styles/vendor/semantic/src/themes/default/collections/breadcrumb.variables +0 -33
  838. package/styles/vendor/semantic/src/themes/default/collections/form.overrides +0 -3
  839. package/styles/vendor/semantic/src/themes/default/collections/form.variables +0 -195
  840. package/styles/vendor/semantic/src/themes/default/collections/grid.overrides +0 -4
  841. package/styles/vendor/semantic/src/themes/default/collections/grid.variables +0 -103
  842. package/styles/vendor/semantic/src/themes/default/collections/menu.overrides +0 -3
  843. package/styles/vendor/semantic/src/themes/default/collections/menu.variables +0 -458
  844. package/styles/vendor/semantic/src/themes/default/collections/message.overrides +0 -3
  845. package/styles/vendor/semantic/src/themes/default/collections/message.variables +0 -158
  846. package/styles/vendor/semantic/src/themes/default/collections/table.overrides +0 -0
  847. package/styles/vendor/semantic/src/themes/default/collections/table.variables +0 -246
  848. package/styles/vendor/semantic/src/themes/default/elements/button.overrides +0 -3
  849. package/styles/vendor/semantic/src/themes/default/elements/button.variables +0 -358
  850. package/styles/vendor/semantic/src/themes/default/elements/container.overrides +0 -3
  851. package/styles/vendor/semantic/src/themes/default/elements/container.variables +0 -58
  852. package/styles/vendor/semantic/src/themes/default/elements/divider.overrides +0 -18
  853. package/styles/vendor/semantic/src/themes/default/elements/divider.variables +0 -53
  854. package/styles/vendor/semantic/src/themes/default/elements/flag.overrides +0 -986
  855. package/styles/vendor/semantic/src/themes/default/elements/flag.variables +0 -13
  856. package/styles/vendor/semantic/src/themes/default/elements/header.overrides +0 -4
  857. package/styles/vendor/semantic/src/themes/default/elements/header.variables +0 -151
  858. package/styles/vendor/semantic/src/themes/default/elements/icon.overrides +0 -941
  859. package/styles/vendor/semantic/src/themes/default/elements/icon.variables +0 -62
  860. package/styles/vendor/semantic/src/themes/default/elements/image.overrides +0 -3
  861. package/styles/vendor/semantic/src/themes/default/elements/image.variables +0 -44
  862. package/styles/vendor/semantic/src/themes/default/elements/input.overrides +0 -3
  863. package/styles/vendor/semantic/src/themes/default/elements/input.variables +0 -101
  864. package/styles/vendor/semantic/src/themes/default/elements/label.overrides +0 -3
  865. package/styles/vendor/semantic/src/themes/default/elements/label.variables +0 -254
  866. package/styles/vendor/semantic/src/themes/default/elements/list.overrides +0 -3
  867. package/styles/vendor/semantic/src/themes/default/elements/list.variables +0 -224
  868. package/styles/vendor/semantic/src/themes/default/elements/loader.overrides +0 -3
  869. package/styles/vendor/semantic/src/themes/default/elements/loader.variables +0 -72
  870. package/styles/vendor/semantic/src/themes/default/elements/rail.overrides +0 -3
  871. package/styles/vendor/semantic/src/themes/default/elements/rail.variables +0 -34
  872. package/styles/vendor/semantic/src/themes/default/elements/reveal.overrides +0 -3
  873. package/styles/vendor/semantic/src/themes/default/elements/reveal.variables +0 -17
  874. package/styles/vendor/semantic/src/themes/default/elements/segment.overrides +0 -3
  875. package/styles/vendor/semantic/src/themes/default/elements/segment.variables +0 -139
  876. package/styles/vendor/semantic/src/themes/default/elements/step.overrides +0 -16
  877. package/styles/vendor/semantic/src/themes/default/elements/step.variables +0 -130
  878. package/styles/vendor/semantic/src/themes/default/globals/reset.overrides +0 -429
  879. package/styles/vendor/semantic/src/themes/default/globals/reset.variables +0 -3
  880. package/styles/vendor/semantic/src/themes/default/globals/site.overrides +0 -3
  881. package/styles/vendor/semantic/src/themes/default/globals/site.variables +0 -936
  882. package/styles/vendor/semantic/src/themes/default/modules/accordion.overrides +0 -28
  883. package/styles/vendor/semantic/src/themes/default/modules/accordion.variables +0 -100
  884. package/styles/vendor/semantic/src/themes/default/modules/chatroom.overrides +0 -3
  885. package/styles/vendor/semantic/src/themes/default/modules/chatroom.variables +0 -3
  886. package/styles/vendor/semantic/src/themes/default/modules/checkbox.overrides +0 -36
  887. package/styles/vendor/semantic/src/themes/default/modules/checkbox.variables +0 -193
  888. package/styles/vendor/semantic/src/themes/default/modules/dimmer.overrides +0 -3
  889. package/styles/vendor/semantic/src/themes/default/modules/dimmer.variables +0 -61
  890. package/styles/vendor/semantic/src/themes/default/modules/dropdown.overrides +0 -62
  891. package/styles/vendor/semantic/src/themes/default/modules/dropdown.variables +0 -373
  892. package/styles/vendor/semantic/src/themes/default/modules/embed.overrides +0 -3
  893. package/styles/vendor/semantic/src/themes/default/modules/embed.variables +0 -53
  894. package/styles/vendor/semantic/src/themes/default/modules/modal.overrides +0 -3
  895. package/styles/vendor/semantic/src/themes/default/modules/modal.variables +0 -151
  896. package/styles/vendor/semantic/src/themes/default/modules/nag.overrides +0 -3
  897. package/styles/vendor/semantic/src/themes/default/modules/nag.variables +0 -74
  898. package/styles/vendor/semantic/src/themes/default/modules/popup.overrides +0 -3
  899. package/styles/vendor/semantic/src/themes/default/modules/popup.variables +0 -137
  900. package/styles/vendor/semantic/src/themes/default/modules/progress.overrides +0 -3
  901. package/styles/vendor/semantic/src/themes/default/modules/progress.variables +0 -113
  902. package/styles/vendor/semantic/src/themes/default/modules/rating.overrides +0 -68
  903. package/styles/vendor/semantic/src/themes/default/modules/rating.variables +0 -103
  904. package/styles/vendor/semantic/src/themes/default/modules/search.overrides +0 -3
  905. package/styles/vendor/semantic/src/themes/default/modules/search.variables +0 -158
  906. package/styles/vendor/semantic/src/themes/default/modules/shape.overrides +0 -3
  907. package/styles/vendor/semantic/src/themes/default/modules/shape.variables +0 -40
  908. package/styles/vendor/semantic/src/themes/default/modules/sidebar.overrides +0 -3
  909. package/styles/vendor/semantic/src/themes/default/modules/sidebar.variables +0 -45
  910. package/styles/vendor/semantic/src/themes/default/modules/sticky.overrides +0 -3
  911. package/styles/vendor/semantic/src/themes/default/modules/sticky.variables +0 -7
  912. package/styles/vendor/semantic/src/themes/default/modules/tab.overrides +0 -3
  913. package/styles/vendor/semantic/src/themes/default/modules/tab.variables +0 -11
  914. package/styles/vendor/semantic/src/themes/default/modules/transition.overrides +0 -910
  915. package/styles/vendor/semantic/src/themes/default/modules/transition.variables +0 -10
  916. package/styles/vendor/semantic/src/themes/default/views/ad.overrides +0 -3
  917. package/styles/vendor/semantic/src/themes/default/views/ad.variables +0 -13
  918. package/styles/vendor/semantic/src/themes/default/views/card.overrides +0 -3
  919. package/styles/vendor/semantic/src/themes/default/views/card.variables +0 -220
  920. package/styles/vendor/semantic/src/themes/default/views/comment.overrides +0 -3
  921. package/styles/vendor/semantic/src/themes/default/views/comment.variables +0 -104
  922. package/styles/vendor/semantic/src/themes/default/views/feed.overrides +0 -3
  923. package/styles/vendor/semantic/src/themes/default/views/feed.variables +0 -141
  924. package/styles/vendor/semantic/src/themes/default/views/item.overrides +0 -3
  925. package/styles/vendor/semantic/src/themes/default/views/item.variables +0 -154
  926. package/styles/vendor/semantic/src/themes/default/views/statistic.overrides +0 -3
  927. package/styles/vendor/semantic/src/themes/default/views/statistic.variables +0 -98
  928. package/styles/vendor/semantic/src/themes/duo/elements/loader.overrides +0 -3
  929. package/styles/vendor/semantic/src/themes/duo/elements/loader.variables +0 -6
  930. package/styles/vendor/semantic/src/themes/fixed-width/collections/grid.overrides +0 -3
  931. package/styles/vendor/semantic/src/themes/fixed-width/collections/grid.variables +0 -23
  932. package/styles/vendor/semantic/src/themes/fixed-width/modules/modal.overrides +0 -3
  933. package/styles/vendor/semantic/src/themes/fixed-width/modules/modal.variables +0 -37
  934. package/styles/vendor/semantic/src/themes/flat/collections/form.overrides +0 -28
  935. package/styles/vendor/semantic/src/themes/flat/collections/form.variables +0 -74
  936. package/styles/vendor/semantic/src/themes/flat/globals/site.overrides +0 -3
  937. package/styles/vendor/semantic/src/themes/flat/globals/site.variables +0 -107
  938. package/styles/vendor/semantic/src/themes/github/assets/fonts/octicons-local.ttf +0 -0
  939. package/styles/vendor/semantic/src/themes/github/assets/fonts/octicons.svg +0 -200
  940. package/styles/vendor/semantic/src/themes/github/assets/fonts/octicons.ttf +0 -0
  941. package/styles/vendor/semantic/src/themes/github/assets/fonts/octicons.woff +0 -0
  942. package/styles/vendor/semantic/src/themes/github/collections/breadcrumb.variables +0 -11
  943. package/styles/vendor/semantic/src/themes/github/collections/form.overrides +0 -16
  944. package/styles/vendor/semantic/src/themes/github/collections/form.variables +0 -40
  945. package/styles/vendor/semantic/src/themes/github/collections/grid.variables +0 -2
  946. package/styles/vendor/semantic/src/themes/github/collections/menu.overrides +0 -7
  947. package/styles/vendor/semantic/src/themes/github/collections/menu.variables +0 -61
  948. package/styles/vendor/semantic/src/themes/github/collections/message.overrides +0 -11
  949. package/styles/vendor/semantic/src/themes/github/collections/message.variables +0 -29
  950. package/styles/vendor/semantic/src/themes/github/collections/table.variables +0 -8
  951. package/styles/vendor/semantic/src/themes/github/elements/button.overrides +0 -4
  952. package/styles/vendor/semantic/src/themes/github/elements/button.variables +0 -77
  953. package/styles/vendor/semantic/src/themes/github/elements/header.variables +0 -9
  954. package/styles/vendor/semantic/src/themes/github/elements/icon.overrides +0 -208
  955. package/styles/vendor/semantic/src/themes/github/elements/icon.variables +0 -13
  956. package/styles/vendor/semantic/src/themes/github/elements/image.variables +0 -5
  957. package/styles/vendor/semantic/src/themes/github/elements/input.overrides +0 -32
  958. package/styles/vendor/semantic/src/themes/github/elements/input.variables +0 -16
  959. package/styles/vendor/semantic/src/themes/github/elements/label.overrides +0 -9
  960. package/styles/vendor/semantic/src/themes/github/elements/label.variables +0 -4
  961. package/styles/vendor/semantic/src/themes/github/elements/segment.overrides +0 -3
  962. package/styles/vendor/semantic/src/themes/github/elements/segment.variables +0 -40
  963. package/styles/vendor/semantic/src/themes/github/elements/step.overrides +0 -26
  964. package/styles/vendor/semantic/src/themes/github/elements/step.variables +0 -26
  965. package/styles/vendor/semantic/src/themes/github/globals/site.variables +0 -47
  966. package/styles/vendor/semantic/src/themes/github/modules/dropdown.overrides +0 -53
  967. package/styles/vendor/semantic/src/themes/github/modules/dropdown.variables +0 -35
  968. package/styles/vendor/semantic/src/themes/github/modules/popup.variables +0 -12
  969. package/styles/vendor/semantic/src/themes/gmail/collections/message.overrides +0 -0
  970. package/styles/vendor/semantic/src/themes/gmail/collections/message.variables +0 -15
  971. package/styles/vendor/semantic/src/themes/instagram/views/card.overrides +0 -12
  972. package/styles/vendor/semantic/src/themes/instagram/views/card.variables +0 -23
  973. package/styles/vendor/semantic/src/themes/material/assets/fonts/icons.eot +0 -0
  974. package/styles/vendor/semantic/src/themes/material/assets/fonts/icons.svg +0 -2373
  975. package/styles/vendor/semantic/src/themes/material/assets/fonts/icons.ttf +0 -0
  976. package/styles/vendor/semantic/src/themes/material/assets/fonts/icons.woff +0 -0
  977. package/styles/vendor/semantic/src/themes/material/collections/menu.overrides +0 -1
  978. package/styles/vendor/semantic/src/themes/material/collections/menu.variables +0 -10
  979. package/styles/vendor/semantic/src/themes/material/elements/button.overrides +0 -15
  980. package/styles/vendor/semantic/src/themes/material/elements/button.variables +0 -97
  981. package/styles/vendor/semantic/src/themes/material/elements/header.overrides +0 -15
  982. package/styles/vendor/semantic/src/themes/material/elements/header.variables +0 -21
  983. package/styles/vendor/semantic/src/themes/material/elements/icon.overrides +0 -934
  984. package/styles/vendor/semantic/src/themes/material/elements/icon.variables +0 -11
  985. package/styles/vendor/semantic/src/themes/material/globals/site.overrides +0 -0
  986. package/styles/vendor/semantic/src/themes/material/globals/site.variables +0 -128
  987. package/styles/vendor/semantic/src/themes/material/modules/dropdown.overrides +0 -5
  988. package/styles/vendor/semantic/src/themes/material/modules/dropdown.variables +0 -20
  989. package/styles/vendor/semantic/src/themes/material/modules/modal.overrides +0 -6
  990. package/styles/vendor/semantic/src/themes/material/modules/modal.variables +0 -15
  991. package/styles/vendor/semantic/src/themes/pulsar/elements/loader.overrides +0 -70
  992. package/styles/vendor/semantic/src/themes/pulsar/elements/loader.variables +0 -7
  993. package/styles/vendor/semantic/src/themes/raised/elements/button.overrides +0 -3
  994. package/styles/vendor/semantic/src/themes/raised/elements/button.variables +0 -27
  995. package/styles/vendor/semantic/src/themes/resetcss/globals/reset.overrides +0 -52
  996. package/styles/vendor/semantic/src/themes/resetcss/globals/reset.variables +0 -3
  997. package/styles/vendor/semantic/src/themes/round/elements/button.overrides +0 -0
  998. package/styles/vendor/semantic/src/themes/round/elements/button.variables +0 -138
  999. package/styles/vendor/semantic/src/themes/rtl/globals/site.overrides +0 -6
  1000. package/styles/vendor/semantic/src/themes/rtl/globals/site.variables +0 -14
  1001. package/styles/vendor/semantic/src/themes/striped/modules/progress.overrides +0 -29
  1002. package/styles/vendor/semantic/src/themes/striped/modules/progress.variables +0 -3
  1003. package/styles/vendor/semantic/src/themes/timeline/views/feed.overrides +0 -27
  1004. package/styles/vendor/semantic/src/themes/timeline/views/feed.variables +0 -36
  1005. package/styles/vendor/semantic/src/themes/twitter/elements/button.overrides +0 -13
  1006. package/styles/vendor/semantic/src/themes/twitter/elements/button.variables +0 -44
  1007. package/styles/vendor/semantic/tasks/README.md +0 -17
  1008. package/styles/vendor/semantic/tasks/admin/components/create.js +0 -332
  1009. package/styles/vendor/semantic/tasks/admin/components/init.js +0 -170
  1010. package/styles/vendor/semantic/tasks/admin/components/update.js +0 -184
  1011. package/styles/vendor/semantic/tasks/admin/distributions/create.js +0 -219
  1012. package/styles/vendor/semantic/tasks/admin/distributions/init.js +0 -169
  1013. package/styles/vendor/semantic/tasks/admin/distributions/update.js +0 -179
  1014. package/styles/vendor/semantic/tasks/admin/publish.js +0 -25
  1015. package/styles/vendor/semantic/tasks/admin/register.js +0 -55
  1016. package/styles/vendor/semantic/tasks/admin/release.js +0 -29
  1017. package/styles/vendor/semantic/tasks/build/assets.js +0 -35
  1018. package/styles/vendor/semantic/tasks/build/css.js +0 -113
  1019. package/styles/vendor/semantic/tasks/build/javascript.js +0 -77
  1020. package/styles/vendor/semantic/tasks/build.js +0 -50
  1021. package/styles/vendor/semantic/tasks/check-install.js +0 -28
  1022. package/styles/vendor/semantic/tasks/clean.js +0 -14
  1023. package/styles/vendor/semantic/tasks/collections/README.md +0 -16
  1024. package/styles/vendor/semantic/tasks/collections/admin.js +0 -49
  1025. package/styles/vendor/semantic/tasks/collections/build.js +0 -19
  1026. package/styles/vendor/semantic/tasks/collections/internal.js +0 -227
  1027. package/styles/vendor/semantic/tasks/collections/rtl.js +0 -16
  1028. package/styles/vendor/semantic/tasks/config/admin/github.js +0 -37
  1029. package/styles/vendor/semantic/tasks/config/admin/oauth.example.js +0 -11
  1030. package/styles/vendor/semantic/tasks/config/admin/release.js +0 -111
  1031. package/styles/vendor/semantic/tasks/config/admin/templates/README.md +0 -32
  1032. package/styles/vendor/semantic/tasks/config/admin/templates/bower.json +0 -29
  1033. package/styles/vendor/semantic/tasks/config/admin/templates/component-package.js +0 -14
  1034. package/styles/vendor/semantic/tasks/config/admin/templates/composer.json +0 -20
  1035. package/styles/vendor/semantic/tasks/config/admin/templates/css-package.js +0 -34
  1036. package/styles/vendor/semantic/tasks/config/admin/templates/less-package.js +0 -21
  1037. package/styles/vendor/semantic/tasks/config/admin/templates/package.json +0 -17
  1038. package/styles/vendor/semantic/tasks/config/defaults.js +0 -117
  1039. package/styles/vendor/semantic/tasks/config/docs.js +0 -32
  1040. package/styles/vendor/semantic/tasks/config/npm/gulpfile.js +0 -72
  1041. package/styles/vendor/semantic/tasks/config/project/config.js +0 -141
  1042. package/styles/vendor/semantic/tasks/config/project/install.js +0 -763
  1043. package/styles/vendor/semantic/tasks/config/project/release.js +0 -65
  1044. package/styles/vendor/semantic/tasks/config/tasks.js +0 -166
  1045. package/styles/vendor/semantic/tasks/config/user.js +0 -58
  1046. package/styles/vendor/semantic/tasks/docs/build.js +0 -189
  1047. package/styles/vendor/semantic/tasks/docs/metadata.js +0 -138
  1048. package/styles/vendor/semantic/tasks/docs/serve.js +0 -255
  1049. package/styles/vendor/semantic/tasks/install.js +0 -459
  1050. package/styles/vendor/semantic/tasks/rtl/build.js +0 -132
  1051. package/styles/vendor/semantic/tasks/rtl/watch.js +0 -221
  1052. package/styles/vendor/semantic/tasks/version.js +0 -11
  1053. package/styles/vendor/semantic/tasks/watch.js +0 -231
  1054. package/tests/i18n.test.js +0 -32
  1055. package/tests/store.test.js +0 -26
  1056. package/translations/en.json +0 -383
  1057. package/translations/zh.json +0 -383
  1058. package/utils/ApiCaller.js +0 -101
  1059. package/utils/Formatter.js +0 -77
  1060. package/utils/asyncInjectors.js +0 -78
  1061. package/utils/authWrapper.js +0 -38
  1062. package/utils/common.js +0 -23
  1063. package/utils/jed.js +0 -1497
  1064. package/utils/messageUtils.js +0 -11
  1065. package/utils/smsCharCount.js +0 -351
  1066. package/utils/smsCharCountV2.js +0 -143
  1067. package/utils/tests/asyncInjectors.test.js +0 -173
@@ -1,3296 +0,0 @@
1
-
2
- /**
3
- *
4
- * FormBuilder
5
- *
6
- */
7
-
8
- import React, { PropTypes } from 'react';
9
- import { Label } from 'semantic-ui-react';
10
- import _ from 'lodash';
11
- import { Tabs, Row, Col, Table, Modal, notification} from 'antd';
12
- import { CapButton, CapInput, CapPopover, CapTextArea, CapCheckbox, CapRadio, CapRadioGroup, CapSelect, CapTable, CapColumn} from '@capillarytech/cap-react-ui-library';
13
- import TemplatePreview from '../../components/TemplatePreview';
14
- // import { CapCheckbox } from '@capillarytech/cap-react-ui-library/basic/checkbox';
15
- import TagList from '../../containers/TagList';
16
- import SmsEditor from '../SmsEditor';
17
- import SlideBox from '../SlideBox';
18
- import CardGrid from '../CardGrid';
19
- import * as charCount from '../../utils/smsCharCount';
20
- import CKEditor from "../../components/Ckeditor/";
21
- import EDMEditor from "../../components/Edmeditor";
22
- import CustomPopOver from '../../components/CustomPopOver';
23
- import './_formBuilder.scss';
24
- import {updateCharCount, checkUnicode} from "../../utils/smsCharCountV2";
25
- const TabPane = Tabs.TabPane;
26
- const {Column} = Table;
27
- // import styled from 'styled-components';
28
-
29
- // import { FormattedMessage } from 'react-intl';
30
- // import messages from './messages';
31
-
32
- class FormBuilder extends React.Component { // eslint-disable-line react/prefer-stateless-function
33
- constructor(props) {
34
- super(props);
35
- this.state = {
36
- formData: {},
37
- errorData: {},
38
- currentTab: 1,
39
- currentLangTab: 'en',
40
- usingTabContainer: false,
41
- tabCount: 1,
42
- tabKey: '',
43
- isFormValid: false,
44
- checkValidation: false,
45
- showModal: false,
46
- modal: {},
47
- currentEvent: {},
48
- currentEventData: {},
49
- popoverVisible: false,
50
- customPopoverVisible: false,
51
- };
52
- this.renderForm = this.renderForm.bind(this);
53
- this.updateFormData = this.updateFormData.bind(this);
54
- this.callChildEvent = this.callChildEvent.bind(this);
55
- this.renderColLabelSection = this.renderColLabelSection.bind(this);
56
- this.renderMultiColSection = this.renderMultiColSection.bind(this);
57
- this.renderSection = this.renderSection.bind(this);
58
- this.renderContainer = this.renderContainer.bind(this);
59
- this.renderParentSection = this.renderParentSection.bind(this);
60
- this.initializeStandAloneSections = this.initializeStandAloneSections.bind(this);
61
- this.initializeMultiColSection = this.initializeMultiColSection.bind(this);
62
- this.initializeParentSection = this.initializeParentSection.bind(this);
63
- this.initializeColLabelSection = this.initializeColLabelSection.bind(this);
64
- this.initializeContainers = this.initializeContainers.bind(this);
65
- this.cloneVersionData = this.cloneVersionData.bind(this);
66
- this.markFinalTabVersion = this.markFinalTabVersion.bind(this);
67
- this.duplicateVersion = this.duplicateVersion.bind(this);
68
- this.deleteVersion = this.deleteVersion.bind(this);
69
- this.renameVersion = this.renameVersion.bind(this);
70
- this.resetState = this.resetState.bind(this);
71
- this.onEdit = this.onEdit.bind(this);
72
- this.changeVersionName = this.changeVersionName.bind(this);
73
- this.hasClass = this.hasClass.bind(this);
74
- this.validateForm = this.validateForm.bind(this);
75
- this.indexOfEnd = this.indexOfEnd.bind(this);
76
- this.saveForm = this.saveForm.bind(this);
77
- this.initializeEditErrorData = this.initializeEditErrorData.bind(this);
78
- this.checkIfSupportedTag = this.checkIfSupportedTag.bind(this);
79
- this.transformInjectedTags = this.transformInjectedTags.bind(this);
80
- this.formElements = [];
81
- }
82
-
83
- componentWillMount() {
84
- console.log('FOrm builder Mounting ', this.props, this.state);
85
- this.setState({usingTabContainer: this.props.usingTabContainer ? this.props.usingTabContainer : false});
86
- if (this.props.formData && (this.props.isEdit || (!this.props.isEdit && !_.isEmpty(this.props.formData)))) {
87
- console.log('mounted');
88
- this.setState({formData: this.props.formData}, () => {
89
- // if (!this.props.isNewVersionFlow) {
90
- this.initialiseForm(this.props.schema, false, true);
91
- // }
92
- });
93
- } else {
94
- console.log('initializing in edit');
95
- this.initialiseForm(this.props.schema, true);
96
- }
97
- }
98
-
99
- componentWillReceiveProps(nextProps) {
100
- console.log('outgoing nextprops', nextProps, this.state.formData);
101
- const type = this.props.location.query.type;
102
- if (this.state.usingTabContainer && nextProps.tabCount !== this.props.tabCount) {
103
- this.setState({tabCount: nextProps.tabCount});
104
- }
105
- if (nextProps.startValidation && nextProps.startValidation !== false && this.props.startValidation !== nextProps.startValidation) {
106
- this.setState({checkValidation: true});
107
- const ifValid = this.validateForm(null, null, null, true);
108
- console.log('validation final', ifValid);
109
- if (ifValid) {
110
- this.saveForm(true);
111
- } else {
112
- this.props.stopValidation();
113
- }
114
- }
115
- // if (nextProps.saveForm && this.props.saveForm !== nextProps.saveForm) {
116
- // this.saveForm(saveForm);
117
- // }
118
- if (nextProps.isEdit) {
119
- console.log('Edit mode form data ', nextProps.formData, this.state.formData);
120
- if (!_.isEqual(nextProps.formData, this.state.formData) && !_.isEmpty(nextProps.formData)) {
121
- console.log('incoming props 1');
122
- if (type === 'embedded') { //TODO: has to be checked and changed.
123
- this.setState({checkValidation: true, formData: nextProps.formData}, () => {
124
- this.validateForm();
125
- });
126
- // this.setState({formData: nextProps.formData}, () => {
127
- // this.validateForm();
128
- // });
129
- }
130
- //TODO change this structure
131
- if (this.props.schema && this.props.schema.channel && this.props.schema.channel.toUpperCase() === 'WECHAT') {
132
- this.setState({formData: nextProps.formData});
133
- } else if ( !_.isEmpty(nextProps.formData) && !_.isEqual(this.state.formData, nextProps.formData) && this.props.schema && this.props.schema.channel && this.props.schema.channel.toUpperCase() === 'MOBILEPUSH') {
134
- this.setState({formData: nextProps.formData, tabCount: nextProps.tabCount});
135
- // this.resetTabKeys(nextProps.formData, nextProps.tabCount);
136
- } else if (this.props.schema && this.props.schema.channel && this.props.schema.channel.toUpperCase() === 'EMAIL') {
137
- this.setState({formData: nextProps.formData});
138
- }
139
- console.log("incoming props 1", this.state.usingTabContainer, this.state.tabKey);
140
- if (this.state.usingTabContainer && this.state.tabKey === '') {
141
- //this.setState({formData: nextProps.formData});
142
- if (nextProps.isNewVersionFlow && !_.isEqual(this.state.tabKey, nextProps.tabKey)) {
143
- console.log('Tab key condition', nextProps.tabKey);
144
- this.setState({tabKey: nextProps.tabKey});
145
- } else if (!nextProps.isNewVersionFlow) {
146
- this.resetTabKeys(nextProps.formData, nextProps.tabCount);
147
- }
148
- this.initializeEditErrorData(nextProps.formData, nextProps.tabCount);
149
- }
150
- }
151
- if (_.isEmpty(this.props.formData) && !_.isEmpty(nextProps.formData)) {
152
- console.log('incoming props 2');
153
- if (this.state.usingTabContainer) {
154
- this.resetTabKeys(nextProps.formData, nextProps.tabCount);
155
- }
156
- this.initializeEditErrorData(nextProps.formData, nextProps.tabCount);
157
- }
158
- if (!_.isEmpty(this.props.formData) && this.props.formData !== this.state.formData && _.isEmpty(this.state.formData) && this.state.usingTabContainer) {
159
- console.log('incoming props 3');
160
- this.resetTabKeys(this.props.formData, nextProps.tabCount);
161
- }
162
- if ( this.state.usingTabContainer && nextProps.formData && !_.isEmpty(nextProps.formData) && _.isEmpty(this.props.formData) && nextProps.tabCount && this.state.tabCount !== nextProps.tabCount) {
163
- console.log('incoming props 4', this.state, nextProps);
164
- this.setState({ formData: nextProps.formData, tabCount: nextProps.tabCount }, () => {
165
- this.initializeEditErrorData(nextProps.formData, nextProps.tabCount);
166
- if (this.state.usingTabContainer) {
167
- this.resetTabKeys(nextProps.formData, nextProps.tabCount);
168
- }
169
- });
170
- if (nextProps.tabCount > 1) {
171
- this.setState({usingTabContainer: true});
172
- }
173
- }
174
- // if (nextProps.currentTab) {
175
- // this.setState({currentTab: nextProps.currentTab});
176
- // }
177
- } else if (!_.isEmpty(nextProps.formData) &&
178
- ( !this.state.usingTabContainer || (this.state.usingTabContainer && nextProps.tabKey !== ''))
179
- && !_.isEqual(nextProps.formData, this.state.formData) &&
180
- !_.isEqual(nextProps.formData, this.props.formData)) {
181
- console.log('outgoing hahaha', nextProps.tabKey);
182
- this.setState({formData: nextProps.formData, tabKey: nextProps.tabKey}, () => {
183
- this.validateForm();
184
- });
185
- //this.resetTabKeys(nextProps.formData, nextProps.tabCount);
186
- } else if ((_.isEmpty(this.props.formData) || !this.props.formData) && _.isEmpty(this.state.formData)) {
187
- console.log('outgoing init when empty');
188
- this.initialiseForm(nextProps.schema, true);
189
- } else if (_.isEmpty(this.props.formData) && !_.isEmpty(nextProps.formData)) {
190
- console.log('outgoing clean form data');
191
- this.setState({formData: nextProps.formData});
192
- }
193
-
194
- let currentLangTab = _.cloneDeep(this.state.currentLangTab);
195
- if (nextProps.isNewVersionFlow && nextProps.formData[`${this.state.currentTab - 1}`] && nextProps.formData[`${this.state.currentTab - 1}`].activeTab) {
196
- currentLangTab = nextProps.formData[`${this.state.currentTab - 1}`].activeTab;
197
- }
198
-
199
- if (nextProps.isNewVersionFlow && nextProps.currentTab && nextProps.currentTab !== this.props.currentTab) {
200
- this.setState({currentTab: nextProps.currentTab});
201
- }
202
-
203
- if (!_.isEmpty(nextProps.formData) && !_.isEqual(this.state.formData, nextProps.formData)) {
204
- console.log('outgoing always', nextProps.formData);
205
- if (nextProps.isNewVersionFlow) {
206
- console.log('outgoing new flow');
207
- const tabKey = (this.state.tabKey !== nextProps.formData[nextProps.currentTab - 1].tabKey) ? nextProps.formData[nextProps.currentTab - 1].tabKey : this.state.tabKey;
208
- console.log('outgoing tab key form builder', this.state.tabKey, nextProps.formData[nextProps.currentTab - 1].tabKey, nextProps.formData, this.state.formData);
209
- this.setState({tabKey});
210
- }
211
- this.setState({formData: nextProps.formData, currentLangTab}, () => {
212
- if (nextProps.isNewVersionFlow && !this.state.formData[this.state.currentTab - 1][this.state.formData[this.state.currentTab - 1].activeTab].tabKey) {
213
- console.log('outgoing have to reset tab keys');
214
- this.resetTabKeys(nextProps.formData, nextProps.tabCount, false, true);
215
- }
216
- if (type === 'embedded' || this.props.schema.channel.toUpperCase() === 'EMAIL') {
217
- this.validateForm();
218
- }
219
- if ((this.props.schema && this.props.schema.channel && this.props.schema.channel.toUpperCase() === 'MOBILEPUSH')) {
220
- this.validateForm();
221
- }
222
- });
223
- }
224
-
225
- console.log('outgoing Next prop schema ', nextProps.schema);
226
- if (!_.isEqual(nextProps.schema, this.props.schema)) {
227
- console.log('outgoing Reinitializing form ', nextProps.schema, this.props.schema);
228
- this.setState({ isFormValid: (this.props.isEdit ? this.props.isEdit : true) }, () => {
229
- console.log('outgoing set validity');
230
- if (!this.props.isEdit || (this.props.isEdit && !_.isEmpty(nextProps.formData))) {
231
- console.log('outgoing 1', this.state.formData, nextProps.formData);
232
- let resetTabKeys = (this.state.formData.tabKey === undefined);
233
- if ((this.props.schema && this.props.schema.channel && this.props.schema.channel.toUpperCase() === 'MOBILEPUSH')) {
234
- resetTabKeys = false;
235
- console.log('outgoing 2');
236
- }
237
- if (this.props.isNewVersionFlow) {
238
- resetTabKeys = false;
239
- }
240
- console.log('outgoing 3', resetTabKeys);
241
- this.initialiseForm(nextProps.schema, false, resetTabKeys);
242
- this.validateForm();
243
- }
244
- });
245
- }
246
- if (!_.isEqual(nextProps.checkValidation, this.props.checkValidation)) {
247
- console.log('setting validation ', nextProps.checkValidation, this.props.checkValidation);
248
- this.setState({ checkValidation: nextProps.checkValidation });
249
- }
250
-
251
- if (this.props.currentTab !== nextProps.currentTab && nextProps.currentTab) {
252
- this.setState({currentTab: nextProps.currentTab});
253
- }
254
-
255
- if (!_.isEmpty(nextProps.injectedTags) && !_.isEqual(nextProps.injectedTags, this.props.injectedTags)) {
256
- console.log('Inside injected Tags', nextProps.injectedTags, this.props.injectedTags);
257
- this.validateForm(nextProps.tags, nextProps.injectedTags);
258
- }
259
- if (!_.isEmpty(nextProps.tags) && !_.isEqual(nextProps.tags, this.props.tags)) {
260
- console.log('Inside Tags', nextProps.tags, this.props.tags);
261
- this.validateForm(nextProps.tags, nextProps.injectedTags);
262
- }
263
- if (!_.isEqual(nextProps.showModal, this.props.showModal)) {
264
- console.log('Inside Modal change ', nextProps.showModal);
265
- this.setState({showModal: nextProps.showModal});
266
- }
267
- if (nextProps.modal && (!_.isEqual(nextProps.modal, this.props.modal) || _.isEmpty(this.state.modal))) {
268
- console.log('Inside Modal change ', nextProps.showModal);
269
- this.setState({modal: nextProps.modal});
270
- }
271
- }
272
-
273
- onEdit(data, e) {
274
- console.log('called on Edit', data, e);
275
- }
276
-
277
- getModal = () => {
278
- let modal;
279
- if (this.state.modal) {
280
- if (this.state.modal.type === 'confirm') {
281
- console.log('Adding modal to render');
282
- modal = (<Modal
283
- visible={this.state.showModal}
284
- title={this.state.modal.title}
285
- onOk={this.handleOk}
286
- onCancel={this.handleCancel}
287
- footer={[
288
- <CapButton key="back" onClick={this.handleCancel}>Cancel</CapButton>,
289
- <CapButton key="submit" type="primary" id={this.state.modal.id} onClick={this.handleOk}>
290
- Yes
291
- </CapButton>,
292
- ]}
293
- >
294
- {this.state.modal.body}
295
- </Modal>);
296
- } else if (this.state.modal.type === "info") {
297
- modal = (<Modal
298
- visible={this.state.showModal}
299
- title={this.state.modal.title}
300
- onOk={this.handleOk}
301
- onCancel={this.handleCancel}
302
- footer={[
303
- <CapButton key="back" onClick={this.handleCancel}>Ok</CapButton>,
304
- ]}
305
- >
306
- {this.state.modal.body}
307
- </Modal>);
308
- } else if (this.state.modal.type === "action") {
309
- modal = (<Modal
310
- visible={this.state.showModal}
311
- title={this.state.modal.title}
312
- onOk={this.handleOk}
313
- onCancel={this.handleCancel}
314
- footer={[
315
- ]}
316
- afterClose={this.handleCloseModal}
317
- >
318
- {this.state.modal.jsx}
319
- </Modal>);
320
- }
321
- }
322
- return modal;
323
- };
324
-
325
- openNotificationWithIcon = (type, message) => {
326
- const dur = (type === 'error' || type === 'warning') ? null : 5;
327
- notification[type]({
328
- message: (`${type.toUpperCase()} ! ! ! `),
329
- description: message, //'This is the content of the notification. This is the content of the notification. This is the content of the notification.',
330
- duration: dur,
331
- });
332
- }
333
-
334
- handleCloseModal = (data, e) => {
335
- console.log('handle close modal', data, e);
336
- const event = this.state.currentEvent;
337
- if (!_.isEmpty(this.state.currentEvent)) {
338
- switch (event) {
339
- case "addLanguage":
340
- this.updateFormData(this.state.currentEventData, this.state.currentEventVal, this.state.currentEvent);
341
- break;
342
- default:
343
- break;
344
- }
345
- }
346
- }
347
-
348
- handleVisibleChange = (popoverVisible) => {
349
- this.setState({ popoverVisible });
350
- };
351
-
352
- handleCustomPopoverVisibleChange = (customPopoverVisible) => {
353
- this.setState({ customPopoverVisible });
354
- };
355
-
356
- resetTabKeys(form, count, changeDefaultTab, setFormTabKey) {
357
- const tabCount = count || this.state.tabCount;
358
- console.log('outgoing reset', form, count, changeDefaultTab);
359
- console.log('incoming reset', form, tabCount);
360
- const formData = _.cloneDeep(form);
361
- let baseIndex = 0;
362
- for (let idx = 0; idx < tabCount; idx += 1) {
363
- if (this.props.isNewVersionFlow && formData[idx].selectedLanguages.length > 0) {
364
- for (let langIndex = 0; langIndex < formData[idx].selectedLanguages.length; langIndex += 1 ) {
365
- const id = _.uniqueId();
366
- if (formData[idx][formData[idx].selectedLanguages[langIndex]]) {
367
- if (!formData[idx][formData[idx].selectedLanguages[langIndex]].tabKey) {
368
- formData[idx][formData[idx].selectedLanguages[langIndex]].tabKey = id;
369
- }
370
- if (formData[idx].base) {
371
- formData.base[formData.base.selectedLanguages[langIndex]].tabKey = id;
372
- }
373
- }
374
- }
375
- if (setFormTabKey) {
376
- if (!formData[idx].activeTab) {
377
- const baseLanguage = this.props.baseLanguage;
378
- console.log('outgoing reset do not have active tab');
379
- formData[idx].tabKey = formData[idx][baseLanguage].tabKey;
380
- } else {
381
- console.log('outgoing reset have active tab');
382
- formData[idx].tabKey = formData[idx][formData[idx].activeTab].tabKey;
383
- }
384
- if (formData[idx].base) {
385
- if (!formData.base.activeTab) {
386
- console.log('outgoing reset do not have active tab base');
387
- const baseLanguage = this.props.baseLanguage;
388
- formData.base.tabKey = formData.base[baseLanguage].tabKey;
389
- } else {
390
- console.log('outgoing reset have active tab base');
391
- formData.base.tabKey = formData.base[formData[idx].activeTab].tabKey;
392
- }
393
- }
394
- }
395
- console.log('debug bal 2', formData[idx], formData, idx);
396
- if (formData[idx].base && formData.base.activeTab) {
397
- console.log('debug bal', formData[idx][formData[idx].activeTab].tabKey, idx, formData[idx]);
398
- // if (!formData.base.tabKey) {
399
- console.log('resetting base tak key');
400
- formData.base.tabKey = formData[idx][formData[idx].activeTab].tabKey;
401
- //}
402
- baseIndex = idx;
403
- }
404
- } else {
405
- console.log('Old Flow');
406
- if (formData[idx]) {
407
- if (!formData[idx].tabKey) {
408
- formData[idx].tabKey = _.uniqueId();
409
- }
410
- if (formData[idx].base) {
411
- formData.base = formData[idx];
412
- baseIndex = idx;
413
- }
414
- }
415
- }
416
- }
417
- console.log('Hello World ', formData, tabCount);
418
- if ((formData.base && formData.base.tabKey && formData.base.tabKey !== '' && !changeDefaultTab) || (formData.base && this.state.tabKey !== formData.base.tabKey)) {
419
- console.log('setting tab key', formData.base.tabKey, this.state.tabKey);
420
- if (this.state.currentTab === 1 && !this.props.isNewVersionFlow) {
421
- this.setState({tabKey: formData.base.tabKey});
422
- } else if (this.props.isNewVersionFlow && this.state.tabKey !== formData[this.state.currentTab - 1].tabKey) {
423
- console.log('outgoing changing tab key');
424
- this.setState({tabKey: formData[this.state.currentTab - 1].tabKey});
425
- }
426
- }
427
- if (setFormTabKey) {
428
- console.log('outgoing reset form builder tab key', formData.base.tabKey, formData[0].tabKey, formData);
429
- this.setState({tabKey: formData.base.tabKey});
430
- }
431
- console.log('form data before adding key', formData);
432
- console.log('outgoing reset final before set', formData, this.state.tabKey);
433
- if (changeDefaultTab) {
434
- this.setState({formData}, () => {
435
- console.log('outgoing reset set data', formData);
436
- this.props.onChange(formData, this.state.tabCount);
437
- this.validateForm();
438
- });
439
- } else {
440
- this.setState({formData, currentTab: baseIndex + 1}, () => {
441
- this.props.onChange(formData, this.state.tabCount);
442
- this.validateForm();
443
- });
444
- }
445
- }
446
-
447
- /* eslint-disable */
448
- validateForm(tags, injectedTags, isSave, showMessages) {
449
- console.log('validating form', this.state.formData);
450
- console.log("mmm", this.props );
451
- let isValid = true;
452
- const type = (this.props.location && this.props.location.query.type) ? this.props.location.query.type : 'full';
453
- const currentModule = (this.props.location && this.props.location.query.module) ? this.props.location.query.module : 'default';
454
- const errorData = _.cloneDeep(this.state.errorData);
455
- if (this.props.schema.channel === 'SMS') {
456
- console.log('sms error validation form data', this.state.formData);
457
- for (let count = 0; count < this.state.tabCount; count += 1) {
458
- if (_.isEmpty(errorData[count])) {
459
- return;
460
- }
461
- const index = count + 1;
462
- if (!this.state.formData[count]) {
463
- continue;
464
- }
465
- const content = this.state.formData[count][`sms-editor${index > 1 ? index : ''}`];
466
- const unicodeCheck = this.state.formData[count][`unicode-validity${index > 1 ? index : ''}`];
467
- const ifUnicode = content && content !== '' ? checkUnicode(content) : false;
468
- console.log('characters are', ifUnicode, unicodeCheck);
469
- const tagValidationResponse = this.validateTags(content, tags, injectedTags);
470
- console.log('tag valid response', tagValidationResponse);
471
- if (tagValidationResponse.valid) {
472
- errorData[count][`sms-editor${index > 1 ? index : ''}`] = false;
473
- } else {
474
- console.log('sms error validation tags issue');
475
- errorData[count][`sms-editor${index > 1 ? index : ''}`] = true;
476
- isValid = false;
477
- }
478
- if(content !== '' && (ifUnicode && !unicodeCheck)) {
479
- errorData[count][`unicode-validity${index > 1 ? index : ''}`] = true;
480
- isValid = false;
481
- } else if (content === '') {
482
- console.log('sms error validation content is empty');
483
- errorData[count][`sms-editor${index > 1 ? index : ''}`] = true;
484
- isValid = false;
485
- } else {
486
- errorData[count][`unicode-validity${index > 1 ? index : ''}`] = false;
487
- }
488
- }
489
- if(type !== 'embedded' && (!this.state.formData['template-name'] || this.state.formData['template-name'] === '')) {
490
- errorData['template-name'] = true;
491
- isValid = false;
492
- } else {
493
- errorData['template-name'] = false;
494
- }
495
- }
496
-
497
- //validation for LINE
498
- if (this.props.schema.channel === 'LINE') {
499
- console.log('line error validation form data', this.state.formData);
500
- if (this.state.formData['0']['message-editor'] !== undefined ) {
501
- const content = this.state.formData['0']['message-editor'];
502
- console.log('tag valid response', content);
503
- const tagValidationResponse = this.validateTags(content, tags, injectedTags);
504
- console.log('tag valid response', tagValidationResponse);
505
- if (tagValidationResponse.valid) {
506
- errorData['0']['message-editor'] = false;
507
- } else {
508
- console.log('message error validation tags issue');
509
- errorData['0']['message-editor'] = true;
510
- isValid = false;
511
- }
512
- if (content.trim() === '') {
513
- console.log('line error validation content is empty');
514
- errorData['0']['message-editor'] = true;
515
- isValid = false;
516
- }
517
- }
518
-
519
- if ( (this.state.formData['0'].image !== undefined) && (this.state.formData['0'].imagePreview !== undefined)){
520
- const imgContentLength = this.state.formData['0'].image.length;
521
- const imgContentLengthPreview = this.state.formData['0'].imagePreview.length;
522
- if ( (imgContentLength < 1) && (imgContentLengthPreview < 1) ) {
523
- console.log('line error validation image content is empty');
524
- errorData['0'].image = true;
525
- errorData['0'].imagePreview = true;
526
- isValid = false;
527
- }else{
528
- errorData['0'].image = false;
529
- errorData['0'].imagePreview = false;
530
- }
531
- }
532
- if(type !== 'embedded' && (!this.state.formData['template-name'] || this.state.formData['template-name'] === '')) {
533
- errorData['template-name'] = true;
534
- isValid = false;
535
- } else {
536
- errorData['template-name'] = false;
537
- }
538
- }
539
-
540
- if (this.props.schema && this.props.schema.channel && this.props.schema.channel.toUpperCase() === 'WECHAT') {
541
- console.log('Validating Form Now ', this.state.formData);
542
- _.forEach(this.state.formData, (val, index) => {
543
- console.log('Validation Index ', index);
544
- if (index.indexOf('template') > -1 && this.state.formData[index] !== undefined) {
545
- const content = this.state.formData[index];
546
- if (content.trim() === '') {
547
- errorData[index] = true;
548
- isValid = false;
549
- } else {
550
- const tagValidationResponse = this.validateTags(content, tags, injectedTags);
551
- console.log('tag valid response', tagValidationResponse);
552
- if (tagValidationResponse.valid) {
553
- errorData[index] = false;
554
- } else {
555
- errorData[index] = true;
556
- isValid = false;
557
- }
558
- }
559
- } else if (index === 'wechat-template') {
560
- const content = this.state.formData[index];
561
- if (content.trim() === '') {
562
- errorData[index] = true;
563
- isValid = false;
564
- }
565
- }
566
- });
567
- console.log('Validation ', this.state.formData, Object.keys(this.state.formData), errorData);
568
- }
569
- if(this.props.schema && this.props.schema.channel && this.props.schema.channel.toUpperCase() === "MOBILEPUSH"){
570
- let androidValid = true, iosValid = true;
571
- let isOnlyAndroid = false, isOnlyIos = false;
572
-
573
- const androidData = {};
574
- for(let data in this.state.formData[0]){
575
- if(!!this.state.formData[0][data] && data !== "tabKey" && data !== "base"){
576
- androidData[data] = this.state.formData[0][data];
577
- }
578
- }
579
- if(_.isEmpty(androidData)){
580
- isOnlyIos = true;
581
- }
582
- const iosData = {};
583
- for(let data in this.state.formData[1]){
584
- if(!!this.state.formData[1][data] && data !== "tabKey" && data !== "base"){
585
- iosData[data] = this.state.formData[1][data];
586
- }
587
- }
588
- if(_.isEmpty(iosData)){
589
- isOnlyAndroid = true;
590
- }
591
- _.forEach(this.state.formData, (tab, index) => {
592
- let isCurrentTabValid = true;
593
- let skipValidation = false;
594
- if (type.toLowerCase() === 'embedded' && ((isOnlyAndroid && parseInt(index) === 1) || (isOnlyIos && parseInt(index) === 0))) {
595
- skipValidation = true;
596
- }
597
- if (!isNaN(index) && tab && !skipValidation) {
598
- const selector = index > 0 ? `${Number(index) + 1}` : '';
599
- let message = tab[`message-editor${selector}`];
600
-
601
- message = message.trim();
602
-
603
- if (errorData[parseInt(index)]) {
604
- if (message === "") {
605
- errorData[parseInt(index)][`message-editor${selector}`] = true;
606
- isValid = false;
607
- isCurrentTabValid = false;
608
- } else {
609
- errorData[parseInt(index)][`message-editor${selector}`] = false;
610
- const tagValidationResponse = this.validateTags(message, tags, injectedTags);
611
- console.log('tag valid response', tagValidationResponse);
612
- if (tagValidationResponse.valid) {
613
- errorData[parseInt(index)][`message-editor${selector}`] = false;
614
- } else {
615
- errorData[parseInt(index)][`message-editor${selector}`] = true;
616
- isValid = false;
617
- }
618
- }
619
-
620
-
621
- const title = tab[`message-title${selector}`].trim();
622
- if (title === "") {
623
- errorData[parseInt(index)][`message-title${selector}`] = true;
624
- isValid = false;
625
- isCurrentTabValid = false;
626
- } else {
627
- errorData[parseInt(index)][`message-title${selector}`] = false;
628
- const tagValidationResponse = this.validateTags(title, tags, injectedTags);
629
- console.log('tag valid response', tagValidationResponse);
630
- if (tagValidationResponse.valid) {
631
- errorData[parseInt(index)][`message-title${selector}`] = false;
632
- } else {
633
- errorData[parseInt(index)][`message-title${selector}`] = true;
634
- isValid = false;
635
- }
636
- }
637
-
638
- // if(tab['primary-cta-link'].trim() === ""){
639
- // errorData[parseInt(index)][`primary-cta-link`] = true;
640
- // isValid = false;
641
- // }else {
642
- // errorData[parseInt(index)]['primary-cta-link'] = false;
643
- // }
644
- if(tab['cta-deeplink-select'] === ""){
645
- errorData[parseInt(index)][`cta-deeplink-select`] = true;
646
- isValid = false;
647
- isCurrentTabValid = false;
648
- }else {
649
- errorData[parseInt(index)]['cta-deeplink-select'] = false;
650
- }
651
- if(tab['cta-deeplink2-select'] === ""){
652
- errorData[parseInt(index)][`cta-deeplink2-select`] = true;
653
- isValid = false;
654
- isCurrentTabValid = false;
655
- }else {
656
- errorData[parseInt(index)]['cta-deeplink2-select'] = false;
657
- }
658
- // }
659
- if(tab[`cta-deeplink-text`] === ""){
660
- errorData[parseInt(index)][`cta-deeplink-text`] = true;
661
- isValid = false;
662
- isCurrentTabValid = false;
663
- }else {
664
- errorData[parseInt(index)]['cta-deeplink-text'] = false;
665
- }
666
-
667
- if(tab['cta-deeplink2-text'] === ""){
668
- errorData[parseInt(index)][`cta-deeplink2-text`] = true;
669
- isValid = false;
670
- isCurrentTabValid = false;
671
- }else {
672
- errorData[parseInt(index)]['cta-deeplink2-text'] = false;
673
- }
674
-
675
-
676
- if(tab['secondary-cta-0-link'] === ""){
677
- errorData[parseInt(index)][`secondary-cta-0-link`] = true;
678
- isValid = false;
679
- isCurrentTabValid = false;
680
- }else {
681
- errorData[parseInt(index)]['secondary-cta-0-link'] = false;
682
- }
683
- if(tab['secondary-cta-0-label'] === ""){
684
- errorData[parseInt(index)][`secondary-cta-0-label`] = true;
685
- isValid = false;
686
- isCurrentTabValid = false;
687
- }else {
688
- errorData[parseInt(index)]['secondary-cta-0-label'] = false;
689
- }
690
- if(tab['cta-deeplink-secondary-cta-0-text'] === ""){
691
- errorData[parseInt(index)][`cta-deeplink-secondary-cta-0-text`] = true;
692
- isValid = false;
693
- isCurrentTabValid = false;
694
- }else {
695
- errorData[parseInt(index)]['cta-deeplink-secondary-cta-0-text'] = false;
696
- }
697
- if(tab['cta-deeplink-secondary-cta-0-select'] === ""){
698
- errorData[parseInt(index)][`cta-deeplink-secondary-cta-0-select`] = true;
699
- isValid = false;
700
- isCurrentTabValid = false;
701
- }else {
702
- errorData[parseInt(index)]['cta-deeplink-secondary-cta-0-select'] = false;
703
- }
704
- if(tab['secondary-cta-1-label'] === ""){
705
- errorData[parseInt(index)][`secondary-cta-1-label`] = true;
706
- isValid = false;
707
- isCurrentTabValid = false;
708
- }else {
709
- errorData[parseInt(index)]['secondary-cta-1-label'] = false;
710
- }
711
- if(tab['cta-deeplink-secondary-cta-1-text'] === ""){
712
- errorData[parseInt(index)][`cta-deeplink-secondary-cta-1-text`] = true;
713
- isValid = false;
714
- isCurrentTabValid = false;
715
- }else {
716
- errorData[parseInt(index)]['cta-deeplink-secondary-cta-1-text'] = false;
717
- }
718
- if(tab['cta-deeplink-secondary-cta-1-select'] === ""){
719
- errorData[parseInt(index)][`cta-deeplink-secondary-cta-1-select`] = true;
720
- isValid = false;
721
- isCurrentTabValid = false;
722
- }else {
723
- errorData[parseInt(index)]['cta-deeplink-secondary-cta-1-select'] = false;
724
- }
725
- if(tab['cta-deeplink-secondary-cta-1-text2'] === ""){
726
- errorData[parseInt(index)][`cta-deeplink-secondary-cta-1-text2`] = true;
727
- isValid = false;
728
- isCurrentTabValid = false;
729
- }else {
730
- errorData[parseInt(index)]['cta-deeplink-secondary-cta-1-text2'] = false;
731
- }
732
- if(tab['cta-deeplink-secondary-cta-1-select2'] === ""){
733
- errorData[parseInt(index)][`cta-deeplink-secondary-cta-1-select2`] = true;
734
- isValid = false;
735
- isCurrentTabValid = false;
736
- }else {
737
- errorData[parseInt(index)]['cta-deeplink-secondary-cta-1-select2'] = false;
738
- }
739
-
740
- if(typeof tab['image'] !== 'undefined' && tab['image'] === ""){
741
- errorData[parseInt(index)]['image'] = true;
742
- isValid = false;
743
- isCurrentTabValid = false;
744
- }else{
745
- errorData[parseInt(index)]['image'] = false;
746
- }
747
- _.forEach(Object.keys(tab), (key) => {
748
- if (key.indexOf('custom-value') > -1) {
749
- if (tab[key] === "") {
750
- errorData[parseInt(index)][key] = true;
751
- isValid = false;
752
- isCurrentTabValid = false;
753
- }else {
754
- errorData[parseInt(index)][key] = false;
755
- }
756
- }
757
- });
758
- }
759
- }
760
- if(index == 0){
761
- androidValid = isCurrentTabValid;
762
- } else if(index == 1){
763
- iosValid = isCurrentTabValid;
764
- }
765
- });
766
- if(type !== 'embedded' && (!this.state.formData['template-name'] || this.state.formData['template-name'] === '')) {
767
- errorData['template-name'] = true;
768
- isValid = false;
769
- androidValid = false;
770
- iosValid = false
771
- } else {
772
- errorData['template-name'] = false;
773
- }
774
- if(isSave && (androidValid || iosValid)){
775
- const modal = this.state.modal;
776
- const androidData = {};
777
-
778
- for(let data in this.state.formData[0]){
779
- if(!!this.state.formData[0][data] && data !== "tabKey" && data !== "base"){
780
- androidData[data] = this.state.formData[0][data];
781
- }
782
- }
783
- if(_.isEmpty(androidData) && this.state.currentTab === 2){
784
- this.setState({androidValid, iosValid}, () => {
785
- this.props.setModalContent('ios');
786
- });
787
- // modal.body = "Android template is not configured. Save without Android template";
788
- // modal.id = "ios";
789
- // modal.type = 'confirm';
790
- return;
791
- }
792
- const iosData = {};
793
- for(let data in this.state.formData[1]){
794
- if(!!this.state.formData[1][data] && data !== "tabKey"){
795
- iosData[data] = this.state.formData[1][data];
796
- }
797
- }
798
- if(_.isEmpty(iosData) && this.state.currentTab === 1){
799
- this.setState({androidValid, iosValid}, () => {
800
- this.props.setModalContent('android');
801
- });
802
- // modal.body = "IOS template is not configured, Save without IOS template";
803
- // modal.id = 'android';
804
- // modal.type = 'confirm';
805
- // this.setState({modal, showModal: true, androidValid, iosValid});
806
- return;
807
- }
808
- }
809
- if (!androidValid || !iosValid) {
810
- this.setState({androidValid, iosValid});
811
- }
812
- if (isOnlyAndroid && androidValid) {
813
- isValid = isValid && true;
814
- } else if (isOnlyIos && iosValid) {
815
- isValid = isValid && true;
816
- } else if (!isOnlyIos && !isOnlyAndroid && androidValid && iosValid) {
817
- isValid = isValid && true;
818
- }
819
- }
820
-
821
- // Form Data Validation for Email Channel
822
- if (this.props.schema && this.props.schema.channel && this.props.schema.channel.toUpperCase() === "EMAIL") {
823
- // Validating Email By iterating all elements of FormBuilder
824
- _.forEach(this.state.formData, (data, index) => {
825
- console.log("Form Iteration Data ", data, index);
826
- if (!this.state.formData["template-subject"] && type.toLowerCase() === 'embedded' && (currentModule.toLowerCase() === 'loyalty' || currentModule.toLowerCase() === 'dvs' || currentModule.toLowerCase() === 'timeline' || currentModule.toLowerCase() === 'library')) {
827
- errorData["template-subject"] = true;
828
- isValid = false;
829
- }
830
- // Check if template subject present in form data from Loyalty, DVS, Timeline
831
- if (index === 'template-subject' && type.toLowerCase() === 'embedded' && (currentModule.toLowerCase() === 'loyalty' || currentModule.toLowerCase() === 'dvs' || currentModule.toLowerCase() === 'timeline' || currentModule.toLowerCase() === 'library')) {
832
- if (data.trim() === '') {
833
- errorData[index] = true;
834
- isValid = false;
835
- } else {
836
- errorData[index] = false;
837
- }
838
- }
839
-
840
- // Check if Template name present in full mode
841
- if(type !== 'embedded' && index === 'template-name' && data === '') {
842
- errorData[index] = true;
843
- isValid = false;
844
- } else if(type !== 'embedded' && index === 'template-name' && data !== '') {
845
- errorData[index] = false;
846
- }
847
-
848
- // Check formData if selected version present or not
849
- if(index === 'template-version' && data === '') {
850
- errorData[index] = true;
851
- isValid = false;
852
- } else if(index === 'template-version' && data !== '') {
853
- errorData[index] = false;
854
- }
855
-
856
- // Check error for the versions
857
- if (!isNaN(index) || index === 'base') {
858
- if (errorData[index] === undefined) {
859
- errorData[index] = {};
860
- }
861
- let errorString = "";
862
- for (var i = 0; i < data.selectedLanguages.length; i+= 1) {
863
- const currentLang = data.selectedLanguages[i];
864
- const content = data[currentLang]['template-content'];
865
- const tagValidationResponse = this.validateTags(content, tags, injectedTags);
866
- if (errorData[index][currentLang] === undefined) {
867
- errorData[index][currentLang] = {};
868
- }
869
- console.log('tag valid response', tagValidationResponse);
870
- if (tagValidationResponse.valid) {
871
- errorData[index][currentLang]['template-content'] = false;
872
- } else {
873
- errorData[index][currentLang]['template-content'] = true;
874
- isValid = false;
875
- if (showMessages && !isNaN(index)) {
876
- if (tagValidationResponse.missingTags.length > 0 || tagValidationResponse.unsupportedTags.length > 0) {
877
- errorString += `Content is not valid for language: ${currentLang}\n`;
878
- }
879
- if (tagValidationResponse.missingTags.length > 0) {
880
- errorString += `Missing tags are: ${tagValidationResponse.missingTags.toString()}\n`;
881
- }
882
- if (tagValidationResponse.unsupportedTags.length > 0) {
883
- errorString += `Unsupported tags are: ${tagValidationResponse.unsupportedTags.toString()}\n`;
884
- }
885
- }
886
- }
887
- }
888
- if (errorString !== "") {
889
- this.openNotificationWithIcon('error', errorString);
890
- }
891
- _.forEach(errorData[index], (versionData, key) => {
892
- if (data.selectedLanguages.indexOf(key) === -1) {
893
- delete errorData[index][key];
894
- }
895
- });
896
- }
897
- });
898
- // for (let count = 0; count < this.state.tabCount; count += 1) {
899
- // const index = count + 1;
900
- // // const content = this.state.formData[count][`template-content${index > 1 ? index : ''}`];
901
- // // const tagValidationResponse = this.validateTags(content, tags, injectedTags);
902
- // // console.log('tag valid response', tagValidationResponse);
903
- // // if (tagValidationResponse.valid) {
904
- // // errorData[count][`template-content${index > 1 ? index : ''}`] = false;
905
- // // } else {
906
- // // errorData[count][`template-content${index > 1 ? index : ''}`] = true;
907
- // // isValid = false;
908
- // // }
909
- // }
910
- // if (type.toLowerCase() === 'embedded' && (currentModule.toLowerCase() === 'loyalty' || currentModule.toLowerCase() === 'dvs' || currentModule.toLowerCase() === 'timeline')) {
911
- // if (this.state.formData['template-subject'] && this.state.formData['template-subject'].trim() === '') {
912
- // errorData['template-subject'] = true;
913
- // isValid = false;
914
- // }
915
- // }
916
- // if(type !== 'embedded' && (!this.state.formData['template-name'] || this.state.formData['template-name'] === '')) {
917
- // errorData['template-name'] = true;
918
- // isValid = false;
919
- // } else {
920
- // errorData['template-name'] = false;
921
- // }
922
- }
923
- this.setState({isFormValid : isValid, errorData});
924
- console.log('final validity', this.state.formData, this.state, isValid);
925
- this.props.onFormValidityChange(isValid);
926
- return isValid;
927
- }
928
-
929
- indexOfEnd(targetString, string) {
930
- var io = targetString.indexOf(string);
931
- return io == -1 ? -1 : io + string.length;
932
- }
933
- continueSaveForm = (id) => {
934
-
935
- };
936
- saveForm(saveForm) {
937
- console.log('Is Form Valid ', this.state.isFormValid, saveForm);
938
- if (this.props.isNewVersionFlow && !saveForm) {
939
- this.props.getValidationData();
940
- return;
941
- }
942
- if (this.state.isFormValid) {
943
- this.props.onSubmit(this.state.formData);
944
- } else {
945
- this.setState({checkValidation: true});
946
- this.validateForm(null, null, true);
947
- }
948
- }
949
-
950
- transformInjectedTags(tags) {
951
- _.forEach(tags, (tag) => {
952
- const temp = tag;
953
- let subKey = '';
954
- Object.keys(tag).map( (k) => {
955
- if (k.indexOf("subtags") !== -1) {
956
- subKey = k;
957
- }
958
- return true;
959
- });
960
- if (subKey !== '') {
961
- temp['tag-header'] = true;
962
- if (subKey !== 'subtags') {
963
- temp.subtags = _.cloneDeep(temp[subKey]);
964
- delete temp[subKey];
965
- }
966
- temp.subtags = this.transformInjectedTags(temp.subtags);
967
- }
968
- });
969
- return tags;
970
- }
971
-
972
- checkIfSupportedTag(checkingTag, injectedTags) {
973
- let result = false;
974
- _.forEach(injectedTags, (tag, key) => {
975
- if (tag.subtags) {
976
- if (this.checkIfSupportedTag(checkingTag, tag.subtags)) {
977
- result = true;
978
- }
979
- } else if (checkingTag === key) {
980
- result = true;
981
- }
982
- });
983
- console.log('injected tags support result', checkingTag, injectedTags, result);
984
- return result;
985
- }
986
-
987
- skipTags(tag) {
988
- const regexGroups = ["dynamic_expiry_date_after_\\d+_days.FORMAT_\\d", "unsubscribe\\(#[a-zA-Z\\d]{6}\\)","Link_to_[a-zA-z]"];
989
-
990
- //const regexGroups = [];
991
- let skipped = false;
992
- _.forEach(regexGroups, (group) => {
993
- //const groupRegex = /dynamic_expiry_date_after_\(\d+\)_days.FORMAT_\d/g;
994
- const groupRegex = new RegExp(group, "g");
995
- let match = groupRegex.exec(tag);
996
- if (match !== null ) {
997
- skipped = true;
998
- return true;
999
- }
1000
- return true;
1001
- });
1002
- return skipped;
1003
- }
1004
-
1005
- validateTags(content, tagsParam, injectedTagsParams) {
1006
- const type = (this.props.location && this.props.location.query.type) ? this.props.location.query.type : 'full';
1007
- let currentModule = this.props.location.query.module ? this.props.location.query.module : 'default';
1008
- if (this.props.tagModule) {
1009
- currentModule = this.props.tagModule;
1010
- }
1011
- const tags = tagsParam ? tagsParam : this.props.tags;
1012
- const injectedTags = this.transformInjectedTags(injectedTagsParams ? injectedTagsParams : this.props.injectedTags);
1013
- const excludedTags = ['user_id_b64', 'outbox_id_b64'];
1014
- console.log('form builder injected tags', injectedTags);
1015
- console.log('validating tags', content, tags, type, module);
1016
- const response = {};
1017
- response.valid = true;
1018
- response.missingTags = [];
1019
- response.unsupportedTags = [];
1020
- _.forEach(tags, (tag) => {
1021
- _.forEach(tag.definition.supportedModules, (module) => {
1022
- if (module.mandatory && (currentModule === module.context)) {
1023
- if (content.indexOf(`{{${tag.definition.value}}}`) === -1) {
1024
- response.valid = false;
1025
- response.missingTags.push(tag.definition.value);
1026
- }
1027
- }
1028
- });
1029
- });
1030
- const regex = /{{[(A-Z\w\(\)@!#$%^&*~.,/\\]+}}/g;
1031
- let match = regex.exec(content);
1032
- while (match !== null) {
1033
- const tagValue = match[0].substring(this.indexOfEnd(match[0], '{{'), match[0].indexOf('}}'));
1034
- match = regex.exec(content);
1035
- let ifSupported = false;
1036
- _.forEach(tags, (tag) => {
1037
- if (tag.definition.value === tagValue) {
1038
- ifSupported = true;
1039
- }
1040
- });
1041
- const ifSkipped = this.skipTags(tagValue);
1042
- if (ifSkipped) {
1043
- ifSupported = true;
1044
- let isUnsubscribeSkipped = tagValue.indexOf("unsubscribe") != -1 ;
1045
- if (isUnsubscribeSkipped) {
1046
- const missingTagIndex = response.missingTags.indexOf("unsubscribe");
1047
- if(missingTagIndex != -1) { //skip regex tags for mandatory tags also
1048
- response.missingTags.splice(missingTagIndex, 1);
1049
- }
1050
- }
1051
- }
1052
- ifSupported = ifSupported || this.checkIfSupportedTag(tagValue, injectedTags);
1053
- if (!ifSupported) {
1054
- response.unsupportedTags.push(tagValue);
1055
- response.valid = false;
1056
- }
1057
- if (response.unsupportedTags.length == 0 && response.missingTags.length == 0 ) {
1058
- response.valid = true;
1059
- }
1060
- }
1061
- return response;
1062
- }
1063
- /* eslint-enable */
1064
- initializeParentSection(section, formDataObj, isContainer, index, ifError) {
1065
- let formData = formDataObj;
1066
- _.forEach(section.childSections, (childSection) => {
1067
- if (childSection.type === 'col-label') {
1068
- formData = this.initializeColLabelSection(childSection, formData, isContainer, index, ifError);
1069
- } else if (childSection.type === 'multicols') {
1070
- formData = this.initializeMultiColSection(childSection, formData, isContainer, index, ifError);
1071
- } else {
1072
- formData = this.initializeParentSection(childSection, formData, isContainer, index, ifError);
1073
- }
1074
- });
1075
- return formData;
1076
- }
1077
-
1078
- initializeEditErrorData(formData, tabCount) {
1079
- const errorData = {};
1080
- for (let idx = 0; idx < tabCount; idx += 1 ) {
1081
- _.forEach(formData[0], (val, key) => {
1082
- if (!errorData[idx]) {
1083
- errorData[idx] = {};
1084
- }
1085
- if (key === 'tabKey' || key === 'base' || key === 'selectedLanguages') {
1086
- return true;
1087
- }
1088
- if (this.props.isNewVersionFlow && formData[0].selectedLanguages.indexOf(key) > -1) {
1089
- _.forEach(formData[0].selectedLanguages, (lang) => {
1090
- if (errorData[idx] === undefined) {
1091
- errorData[idx] = {};
1092
- }
1093
- if (errorData[idx][lang] === undefined) {
1094
- errorData[idx][lang] = {};
1095
- }
1096
- errorData[idx][lang]['template-content'] = false;
1097
- });
1098
- } else {
1099
- errorData[idx][key] = false;
1100
- }
1101
- return true;
1102
- });
1103
- }
1104
- this.setState({errorData});
1105
- }
1106
-
1107
- initializeMultiColSection(section, formDataObj, isContainer, index, ifError, paneIndex) {
1108
- console.log('initializeMultiColSection', section, formDataObj, isContainer, index, ifError, paneIndex);
1109
- const formData = _.cloneDeep(formDataObj);
1110
- const newFormData = {};
1111
- newFormData[index] = {};
1112
- _.forEach(section.inputFields, (inputField) => {
1113
- console.log('Input field ', inputField);
1114
- _.forEach(inputField.cols, (col) => {
1115
- console.log('Multi col init ', col, formData[index], index);
1116
- if (isContainer && !formData[index]) {
1117
- formData[index] = {};
1118
- }
1119
- if (isContainer && this.props.isNewVersionFlow) {
1120
- // if (formData[index] && formData[index].selectedLanguages && formData[index].selectedLanguages.length > 0) {
1121
- // for (let i = 0; i < formData[index].selectedLanguages.length; i += 1 ) {
1122
- // formData[index][formData[index].selectedLanguages[i]] = {};
1123
- // }
1124
- // } else {
1125
- // formData[index][`${this.props.baseLanguage ? this.props.baseLanguage : 'en'}`] = {};
1126
- // }
1127
- _.forEach(this.props.supportedLanguages, (language) => {
1128
- if (!formData[index][language.iso_code] && this.props.baseLanguage === language.iso_code) {
1129
- formData[index][language.iso_code] = {};
1130
- }
1131
- });
1132
- }
1133
- // if (!ifError && (col.id.indexOf('template-label-') === -1 && col.id.indexOf('tagList-') === -1)) {
1134
- // this.formElements.push(col.id);
1135
- // }
1136
- if (!col.onlyDisplay && !ifError) {
1137
- if (col.id.indexOf('tagList-') === -1) {
1138
- this.formElements.push(col.id);
1139
- }
1140
-
1141
- if (!this.props.isNewVersionFlow) {
1142
- if (isContainer && formData[index][col.id] === undefined) {
1143
- if (ifError) {
1144
- formData[index][col.id] = false;
1145
- } else if (isContainer && formData[index][col.id] === undefined && col.value) {
1146
- formData[index][col.id] = col.value;
1147
- } else {
1148
- formData[index][col.id] = '';
1149
- }
1150
- } else if (!isContainer && ifError && formData[col.id] === undefined) {
1151
- formData[col.id] = false;
1152
- } else if (!isContainer && !ifError && formData[col.id] === undefined) {
1153
- formData[col.id] = '';
1154
- }
1155
- } else {
1156
- console.log('new flow ', col, this.props.supportedLanguages, this.props.baseLanguage, index);
1157
- if (!(col.id.indexOf('template-content') > -1 && col.id !== 'template-content')) {
1158
- if (isContainer && formData[index] && formData[index][this.props.baseLanguage] && formData[index][this.props.baseLanguage][col.id] === undefined) {
1159
- if (ifError) {
1160
- formData[index][this.props.baseLanguage][col.id] = false;
1161
- } else if (isContainer && formData[index][this.props.baseLanguage][col.id] === undefined && col.value) {
1162
- formData[index][this.props.baseLanguage][col.id] = col.value;
1163
- } else {
1164
- formData[index][this.props.baseLanguage][col.id] = '';
1165
- }
1166
- } else if (!isContainer && ifError && formData[col.id] === undefined) {
1167
- formData[col.id] = false;
1168
- } else if (!isContainer && !ifError && formData[col.id] === undefined) {
1169
- formData[col.id] = '';
1170
- }
1171
- }
1172
- console.log('New Form Data ', formData);
1173
- }
1174
- }
1175
- if (col.type === 'checkbox') {
1176
- if (isContainer) {
1177
- formData[index][col.id] = false;
1178
- } else if (!isContainer && formData[col.id] === undefined) {
1179
- formData[col.id] = false;
1180
- }
1181
- }
1182
- });
1183
- });
1184
- return formData;
1185
- }
1186
-
1187
- initializeColLabelSection(section, formDataObj, isContainer, index, ifError) {
1188
- const formData = formDataObj;
1189
- _.forEach(section.inputFields, (inputField) => {
1190
- if (isContainer && !formData[index]) {
1191
- formData[index] = {};
1192
- }
1193
- if (!ifError && (inputField.id.indexOf('template-label-') === -1 && inputField.id.indexOf('tagList-') === -1)) {
1194
- this.formElements.push(inputField.id);
1195
- }
1196
- if (!inputField.onlyDisplay) {
1197
- if (isContainer && !this.props.isNewVersionFlow && formData[index][inputField.id] === undefined) {
1198
- if (ifError) {
1199
- formData[index][inputField.id] = false;
1200
- } else {
1201
- formData[index][inputField.id] = '';
1202
- }
1203
- } else if (isContainer && this.props.isNewVersionFlow && formData[index][this.props.baseLanguage][inputField.id] === undefined) {
1204
- if (ifError) {
1205
- formData[index][this.props.baseLanguage][inputField.id] = false;
1206
- } else {
1207
- formData[index][this.props.baseLanguage][inputField.id] = '';
1208
- }
1209
- } else if (!isContainer && ifError && this.state.formData[inputField.id] === undefined) {
1210
- formData[inputField.id] = false;
1211
- } else if (!isContainer && !ifError && this.state.formData[inputField.id] === undefined) {
1212
- formData[inputField.id] = '';
1213
- }
1214
- }
1215
- if (inputField.type === 'checkbox') {
1216
- if (isContainer) {
1217
- formData[index][inputField.id] = false;
1218
- } else {
1219
- formData[inputField.id] = false;
1220
- }
1221
- }
1222
- });
1223
- return formData;
1224
- }
1225
-
1226
- initializeStandAloneSections(schema, formDataObj, ifError) {
1227
- let formData = _.cloneDeep(formDataObj);
1228
- if (schema.standalone) {
1229
- _.forEach(schema.standalone.sections, (section) => {
1230
- if (section) {
1231
- if (section.type === 'multicols') {
1232
- formData = this.initializeMultiColSection(section, formData, false, -1, ifError);
1233
- } else if (section.type === 'col-label') {
1234
- formData = this.initializeColLabelSection(section, formData, false, -1, ifError);
1235
- } else if (section.type === 'parent') {
1236
- formData = this.initializeParentSection(section, formData, false, -1, ifError);
1237
- }
1238
- }
1239
- });
1240
- }
1241
- return formData;
1242
- }
1243
-
1244
- initializeContainers(schema, formDataObj, ifError) {
1245
- let formData = _.cloneDeep(formDataObj);
1246
- if (this.props.isNewVersionFlow) {
1247
- _.forEach(schema.containers, (val, index) => {
1248
- if (val.type === 'tabs') {
1249
- console.log('Initial COntainer ', val);
1250
- this.setState({usingTabContainer: true});
1251
- _.forEach(val.panes, (pane, paneIndex) => {
1252
- _.forEach(pane.sections, (section) => {
1253
- if (section.type === 'multicols') {
1254
- console.log('initializeContainers', section, index);
1255
- formData = this.initializeMultiColSection(section, formData, true, index, ifError, paneIndex);
1256
- } else if (section.type === 'col-label') {
1257
- formData = this.initializeColLabelSection(section, formData, true, index, ifError);
1258
- } else if (section.type === 'parent') {
1259
- formData = this.initializeParentSection(section, formData, true, index, ifError);
1260
- }
1261
- });
1262
- });
1263
- if (ifError) {
1264
- formData[val.id] = false;
1265
- }
1266
- formData[val.id] = '';
1267
- }
1268
- if (val.type === 'checkbox') {
1269
- formData[val.id] = false;
1270
- }
1271
- });
1272
- } else {
1273
- _.forEach(schema.containers, (val) => {
1274
- if (val.type === 'tabs') {
1275
- console.log('Initial COntainer ', val);
1276
- this.setState({usingTabContainer: true});
1277
- _.forEach(val.panes, (pane, index) => {
1278
- _.forEach(pane.sections, (section) => {
1279
- if (section.type === 'multicols') {
1280
- console.log('initializeContainers', section, index);
1281
- formData = this.initializeMultiColSection(section, formData, true, index, ifError);
1282
- } else if (section.type === 'col-label') {
1283
- formData = this.initializeColLabelSection(section, formData, true, index, ifError);
1284
- } else if (section.type === 'parent') {
1285
- formData = this.initializeParentSection(section, formData, true, index, ifError);
1286
- }
1287
- });
1288
- });
1289
- if (ifError) {
1290
- formData[val.id] = false;
1291
- }
1292
- formData[val.id] = '';
1293
- }
1294
- if (val.type === 'checkbox') {
1295
- formData[val.id] = false;
1296
- }
1297
- });
1298
- }
1299
- return formData;
1300
- }
1301
-
1302
- initialiseForm(schema, makeFormEmpty, resetTabKeys) {
1303
- console.log('outgoing init form xxx', schema, makeFormEmpty, this.state.formData, resetTabKeys);
1304
- console.log('init form xxx', schema, makeFormEmpty, this.state.formData, resetTabKeys);
1305
- let formData = makeFormEmpty ? {} : _.cloneDeep(this.state.formData);
1306
- let errorData = {};
1307
- this.formElements = [];
1308
- if (_.isEmpty(schema)) {
1309
- return;
1310
- }
1311
- errorData = this.initializeStandAloneSections(schema, errorData, true);
1312
- formData = this.initializeStandAloneSections(schema, formData);
1313
- formData = this.initializeContainers(schema, formData);
1314
- errorData = this.initializeContainers(schema, errorData, true);
1315
-
1316
- console.log('After Init ', errorData, formData);
1317
- if (!this.props.isEdit) {
1318
- if (!formData[0]) {
1319
- formData[0] = {};
1320
- }
1321
- if (!errorData[0]) {
1322
- errorData[0] = {};
1323
- }
1324
- formData[0].base = true;
1325
- formData[0].tabKey = formData[0].tabKey ? formData[0].tabKey : _.uniqueId();
1326
- errorData.base = errorData[0];
1327
- formData.base = formData[0];
1328
- if (this.state.currentTab === 1) {
1329
- this.setState({tabKey: formData.base.tabKey});
1330
- }
1331
- }
1332
- const tempFormData = _.cloneDeep(formData);
1333
- if (!this.props.isNewVersionFlow) {
1334
- _.forEach(formData, (element, key) => {
1335
- if (typeof element !== 'object' && this.formElements.indexOf(key) === -1) {
1336
- delete tempFormData[key];
1337
- } else if (typeof element === "object") {
1338
- _.forEach(element, (innerElement, innerKey) => {
1339
- if (innerKey !== "tabKey" && innerKey !== "base" && innerKey !== 'name' && innerKey !== 'imagePreview' && this.formElements.indexOf(innerKey) === -1) {
1340
- delete tempFormData[key][innerKey];
1341
- }
1342
- });
1343
- }
1344
- });
1345
- }
1346
- formData = _.cloneDeep(tempFormData);
1347
- this.setState({formData, errorData}, () => {
1348
- this.validateForm();
1349
- if (this.props.isSchemaChanged || resetTabKeys) {
1350
- this.resetTabKeys(formData, this.props.tabCount, true);
1351
- }
1352
- });
1353
- }
1354
-
1355
- cloneVersionData(ifError) {
1356
- console.log('cloning data', this.state.formData, this.state.tabCount, ifError);
1357
- if (this.state.tabCount === 0) {
1358
- this.initialiseForm(this.props.schema, true);
1359
- return;
1360
- }
1361
- let formData = {};
1362
- if (ifError) {
1363
- formData = Object.assign({}, this.state.errorData);
1364
- } else {
1365
- formData = Object.assign({}, this.state.formData);
1366
- }
1367
- let newTabIndex = 0;
1368
- if (ifError) {
1369
- newTabIndex = this.state.tabCount - 1;
1370
- } else {
1371
- newTabIndex = this.state.tabCount;
1372
- }
1373
- formData[newTabIndex] = {};
1374
- console.log('Step 1', formData);
1375
- const newTabCount = newTabIndex + 1;
1376
- _.forEach(formData[0], (val, key) => {
1377
- console.log('Step 1.1', val, key);
1378
- if (key === 'base') {
1379
- return true;
1380
- }
1381
- if (key === 'tabKey') {
1382
- return true;
1383
- }
1384
- if (typeof val === 'string') {
1385
- if (ifError) {
1386
- formData[newTabIndex][`${key}${newTabCount}`] = false;
1387
- } else {
1388
- console.log('IsNewFlow ', this.props.isNewVersionFlow);
1389
- if (this.props.isNewVersionFlow) {
1390
- if (key.indexOf('activeTab') > -1) {
1391
- formData[newTabIndex][`${key}`] = this.props.baseLanguage;
1392
- } else {
1393
- formData[newTabIndex][`${key}${newTabCount}`] = '';
1394
- }
1395
- } else {
1396
- formData[newTabIndex][`${key}${newTabCount}`] = '';
1397
- }
1398
- }
1399
- } else if (typeof val === 'boolean') {
1400
- formData[newTabIndex][`${key}${newTabCount}`] = false;
1401
- } else if (typeof val === 'object') {
1402
- if (this.props.isNewVersionFlow) {
1403
- if (key.indexOf('selectedLanguages') > -1) {
1404
- formData[newTabIndex][key] = [this.props.baseLanguage];
1405
- } else {
1406
- console.log('log line ', val);
1407
- if (key === this.props.baseLanguage) {
1408
- formData[newTabIndex][key] = {};
1409
- _.forEach(val, (subVal, index) => {
1410
- console.log('Subvalue ', subVal, index);
1411
- // if (subVal === 'is_drag_drop' || subVal === 'lang_id' || subVal === 'iso_code' === 'language') {
1412
- // console.log('SubVal 1234567890- ', formData[0][this.props.baseLanguage]);
1413
- // formData[newTabIndex][key][index] = formData[0][this.props.baseLanguage][subVal];
1414
- // } else {
1415
- if (index === 'tabKey') {
1416
- formData[newTabIndex][key][index] = _.uniqueId();
1417
- } else if (index === 'template-content') {
1418
- formData[newTabIndex][key][index] = "";
1419
- } else {
1420
- formData[newTabIndex][key][index] = _.cloneDeep(formData[0][key][index]);
1421
- }
1422
- // }
1423
- });
1424
- }
1425
- }
1426
- } else {
1427
- formData[newTabIndex][key] = {};
1428
- _.forEach(val, (subVal, index) => {
1429
- console.log('Subvalue ', subVal, index);
1430
- formData[newTabIndex][key][index] = '';
1431
- });
1432
- }
1433
- }
1434
- return true;
1435
- });
1436
- let id = (this.props.isNewVersionFlow && formData[newTabIndex][this.props.baseLanguage].tabKey) ? formData[newTabIndex][this.props.baseLanguage].tabKey : _.uniqueId();
1437
- console.log('Step 2', formData);
1438
- if (!ifError) {
1439
- let validId = false;
1440
- while (!validId) {
1441
- validId = true;
1442
- for (let idx = 0; idx < this.state.tabCount; idx += 1) {
1443
- if (id === formData[idx].tabKey) {
1444
- validId = false;
1445
- }
1446
- }
1447
- if (validId) {
1448
- break;
1449
- }
1450
- id = _.uniqueId();
1451
- }
1452
- formData[newTabIndex].tabKey = id;
1453
- }
1454
- // if (!this.props.isEdit) {
1455
- if (ifError) {
1456
- console.log('If error ', ifError);
1457
- this.setState({errorData: formData});
1458
- } else {
1459
- console.log('formData after cloning', formData, newTabIndex + 1);
1460
- this.props.onChange(formData, newTabCount, newTabIndex + 1);
1461
- console.log('After OnChange');
1462
- this.setState({tabCount: newTabCount, formData, currentTab: newTabIndex + 1, tabKey: id}, () => {
1463
- this.cloneVersionData(true);
1464
- });
1465
- }
1466
- }
1467
-
1468
- changeVersionName(data) {
1469
- const formData = _.cloneDeep(this.state.formData);
1470
- if (formData[this.state.currentTab - 1]) {
1471
- formData[this.state.currentTab - 1].name = data;
1472
- this.setState({formData});
1473
- }
1474
- }
1475
-
1476
- markFinalTabVersion() {
1477
- const formData = _.cloneDeep(this.state.formData);
1478
- if (this.state.usingTabContainer) {
1479
- console.log('Tab Count ', this.state.tabCount);
1480
- for (let count = 0; count < this.state.tabCount; count += 1) {
1481
- if (parseInt(this.state.currentTab - 1, 10) !== count) {
1482
- formData[count].base = false;
1483
- } else {
1484
- formData[count].base = true;
1485
- formData.base = formData[count];
1486
- }
1487
- }
1488
- this.setState({formData});
1489
-
1490
- this.props.onChange(formData, this.state.tabCount);
1491
- }
1492
- }
1493
-
1494
- resetState(isEdit, usingTabContainer) {
1495
- this.setState({
1496
- formData: {},
1497
- currentTab: 1,
1498
- usingTabContainer: usingTabContainer || false,
1499
- tabCount: 1,
1500
- errorData: {},
1501
- tabKey: '',
1502
- }, () => {
1503
- if (!isEdit) {
1504
- console.log('init from reset');
1505
- this.initialiseForm(this.props.schema, true);
1506
- }
1507
- });
1508
- }
1509
-
1510
- duplicateVersion(ifError, currentTab) {
1511
- let formData = {};
1512
- let tabCount = 0;
1513
- if (ifError) {
1514
- formData = _.cloneDeep(this.state.errorData);
1515
- tabCount = this.state.tabCount - 1;
1516
- } else {
1517
- formData = _.cloneDeep(this.state.formData);
1518
- tabCount = this.state.tabCount;
1519
- }
1520
- const newTabCount = tabCount + 1;
1521
- _.forEach(formData[0], (val, key) => {
1522
- if (!formData[tabCount]) {
1523
- formData[tabCount] = {};
1524
- }
1525
- if (key === 'base') {
1526
- formData[tabCount].base = false;
1527
- return true;
1528
- }
1529
- if (key === 'tabKey') {
1530
- let validId = false;
1531
- let id = _.uniqueId();
1532
- while (!validId) {
1533
- validId = true;
1534
- for (let idx = 0; idx < this.state.tabCount; idx += 1) {
1535
- if (id === formData[idx].tabKey) {
1536
- validId = false;
1537
- }
1538
- }
1539
- if (validId) {
1540
- break;
1541
- }
1542
- id = _.uniqueId();
1543
- }
1544
- formData[tabCount].tabKey = id;
1545
- return true;
1546
- }
1547
- const tempTab = ifError ? currentTab : this.state.currentTab;
1548
- if (typeof val === 'string') {
1549
- if (this.props.isNewVersionFlow) {
1550
- formData[tabCount][`${key}`] = formData[tempTab - 1][`${key}`];
1551
- } else {
1552
- formData[tabCount][`${key}${newTabCount}`] = formData[tempTab - 1][`${key}${parseInt(tempTab, 10) === 1 ? '' : tempTab}`];
1553
- }
1554
- } else if (typeof val === 'boolean') {
1555
- if (this.props.isNewVersionFlow) {
1556
- formData[tabCount][`${key}`] = formData[tempTab - 1][`${key}`];
1557
- } else {
1558
- formData[tabCount][`${key}${newTabCount}`] = formData[tempTab - 1][`${key}${parseInt(tempTab, 10) === 1 ? '' : tempTab}`];
1559
- }
1560
- }
1561
- return true;
1562
- });
1563
- if (ifError) {
1564
- this.setState({errorData: formData});
1565
- } else {
1566
- const tempTab = ifError ? currentTab : this.state.currentTab;
1567
- const version = `Version ${this.state.currentTab}`;
1568
- formData[tabCount].name = `Copy of ${formData[tempTab - 1].name ? formData[tempTab - 1].name : version}`;
1569
- formData[tabCount].base = false;
1570
- const initialTab = this.state.currentTab;
1571
- this.setState({formData, tabCount: tabCount + 1, currentTab: tabCount + 1, tabKey: formData[tabCount].tabKey}, () => {
1572
- this.duplicateVersion(true, initialTab);
1573
- });
1574
-
1575
- this.props.onChange(formData, tabCount + 1, tabCount + 1);
1576
- }
1577
- }
1578
-
1579
- deleteVersion(ifError, currentTab) {
1580
- console.log('trying to delete version in form builder');
1581
- if (!ifError && this.state.tabCount === 1) {
1582
- console.log('cannot delete minimum 1 version');
1583
- return;
1584
- }
1585
- let formData = {};
1586
- let finalCurrentTab = 0;
1587
- let tabCount = 0;
1588
- if (ifError) {
1589
- formData = _.cloneDeep(this.state.errorData);
1590
- tabCount = this.state.tabCount + 1;
1591
- finalCurrentTab = currentTab;
1592
- } else {
1593
- formData = _.cloneDeep(this.state.formData);
1594
- tabCount = this.state.tabCount;
1595
- finalCurrentTab = this.state.currentTab;
1596
- }
1597
- // delete formData[this.state.currentTab - 1];
1598
- let finalActiveTabKey = '';
1599
- if (tabCount > 1 && currentTab !== tabCount) {
1600
- finalActiveTabKey = formData[currentTab].tabKey;
1601
- }
1602
- console.log('Tab Counts ', currentTab, tabCount);
1603
- if (tabCount > 1 && currentTab === tabCount) {
1604
- finalActiveTabKey = formData[currentTab - 2].tabKey;
1605
- finalCurrentTab = currentTab - 1;
1606
- }
1607
- // if (this.state.tabCount > 1 && this.state.currentTab === 1) {
1608
- // finalActiveTabKey = this.state.formData[1].tabKey;
1609
- // }
1610
- if (tabCount === 1) {
1611
- finalActiveTabKey = '';
1612
- }
1613
- const initialFormData = _.cloneDeep(formData[0]);
1614
- for (let count = currentTab - 1; count < tabCount - 1; count += 1) {
1615
- delete formData[count];
1616
- _.forEach(initialFormData, (val, key) => {
1617
- if (!formData[count]) {
1618
- formData[count] = {};
1619
- }
1620
- if (key === 'base') {
1621
- formData[count].base = formData[count + 1].base ? formData[count + 1].base : false;
1622
- return true;
1623
- }
1624
- if (key === 'tabKey') {
1625
- formData[count].tabKey = formData[count + 1].tabKey;
1626
- return true;
1627
- }
1628
- formData[count][`${key}${count === 0 ? '' : count + 1}`] = formData[count + 1][`${key}${count + 2}`];
1629
- return true;
1630
- });
1631
- }
1632
- delete formData[tabCount - 1];
1633
- if (ifError) {
1634
- this.setState({errorData: formData});
1635
- } else {
1636
- const initialTab = currentTab;
1637
- if (this.props.isNewVersionFlow) {
1638
- formData['template-version-options'].splice(`${currentTab - 1}`, 1);
1639
- formData['template-version'] = formData['template-version-options'][0].value;
1640
- }
1641
- this.setState({formData, tabCount: tabCount - 1, tabKey: finalActiveTabKey, currentTab: finalCurrentTab}, () => {
1642
- this.deleteVersion(true, initialTab);
1643
- });
1644
-
1645
- this.props.onChange(formData, tabCount - 1);
1646
- }
1647
- }
1648
-
1649
- deleteLanguage = () => {
1650
- if (this.state.formData[`${this.state.currentTab - 1}`].activeTab === this.props.baseLanguage) {
1651
- console.log('Base Language');
1652
- } else {
1653
- const formData = _.cloneDeep(this.state.formData);
1654
- const currentTab = `${this.state.currentTab - 1}`;
1655
- const currentLang = formData[`${this.state.currentTab - 1}`].activeTab;
1656
- const deleteLanguageIndex = formData[currentTab].selectedLanguages.indexOf(currentLang);
1657
- const baseLangTabKey = formData[currentTab][this.props.baseLanguage].tabKey;
1658
- console.log('deleting language', currentTab, currentLang);
1659
- delete formData[currentTab][currentLang];
1660
- formData[currentTab].activeTab = this.props.baseLanguage;
1661
- formData[currentTab].selectedLanguages.splice(deleteLanguageIndex, 1);
1662
- formData[currentTab].tabKey = baseLangTabKey;
1663
- if (formData[currentTab].base) {
1664
- delete formData.base[currentLang];
1665
- delete formData.base.selectedLanguages.splice(deleteLanguageIndex, 1);
1666
- formData.base.tabKey = baseLangTabKey;
1667
- formData.base.activeTab = this.props.baseLanguage;
1668
- }
1669
- console.log('After Deleting Form data ', formData);
1670
- this.setState({formData, currentLangTab: this.props.baseLanguage, tabKey: baseLangTabKey}, () => {
1671
- this.state.currentEvent.call(this.props.parent, formData, deleteLanguageIndex);
1672
- this.setState({currentEvent: {}, currentEventData: {}});
1673
- });
1674
- }
1675
- };
1676
-
1677
- renameVersion(currentTab) {
1678
- console.log('form builder renaming', currentTab);
1679
- document.getElementById(`tab-header${currentTab > 1 ? currentTab : ''}`).contentEditable = "true";
1680
- document.getElementById(`tab-header${currentTab > 1 ? currentTab : ''}`).focus();
1681
- }
1682
-
1683
- updateFormData(data, val, event) {
1684
- console.log('updating data', data, val, event, this.props.addLanguageType);
1685
- const formData = _.cloneDeep(this.state.formData);
1686
- console.log('oform data before updating', JSON.stringify(formData));
1687
- const tabIndex = this.state.currentTab - 1;
1688
- let currentTab = _.cloneDeep(this.state.currentTab);
1689
- console.log('setting form data1', JSON.stringify(formData));
1690
- if (this.state.usingTabContainer && !val.standalone) {
1691
- const data1 = data;
1692
- if (event === "addLanguage") {
1693
- const addLanguageType = this.props.addLanguageType;
1694
- if (addLanguageType === '') {
1695
- return;
1696
- }
1697
- const currentLang = formData[tabIndex].activeTab;
1698
- let baseTab = _.cloneDeep(formData[tabIndex][currentLang]);
1699
- let id = _.uniqueId();
1700
- let validId = false;
1701
- switch (addLanguageType) {
1702
- case "upload":
1703
- baseTab = _.cloneDeep(formData[tabIndex][currentLang]);
1704
- console.log('Add Language Event', JSON.stringify(formData), "\n", JSON.stringify(baseTab));
1705
- baseTab.iso_code = data.iso_code;
1706
- baseTab.lang_id = data.lang_id;
1707
- baseTab.language = data.language;
1708
- while (!validId) {
1709
- validId = true;
1710
- for (let idx = 0; idx < formData[tabIndex].selectedLanguages.length; idx += 1) {
1711
- if (!formData[tabIndex]) {
1712
- continue;
1713
- }
1714
- console.log('comparing tab keys', id, formData, formData[tabIndex][formData[tabIndex].selectedLanguages[idx]].tabKey);
1715
- if (id === formData[tabIndex][formData[tabIndex].selectedLanguages[idx]].tabKey) {
1716
- validId = false;
1717
- }
1718
- }
1719
- if (validId) {
1720
- break;
1721
- }
1722
- id = _.uniqueId();
1723
- }
1724
- baseTab.tabKey = id;
1725
- //formData[tabIndex].selectedLanguages.push(data.iso_code);
1726
- formData[tabIndex][data.iso_code] = baseTab;
1727
- console.log('Add Language Event After', formData);
1728
- formData[tabIndex].activeTab = data.iso_code;
1729
- formData[tabIndex].tabKey = baseTab.tabKey;
1730
- break;
1731
- case "copyPrimaryLanguage":
1732
- case "useEditor":
1733
- baseTab = _.cloneDeep(formData[tabIndex][this.props.baseLanguage]);
1734
- console.log('Add Language Event', data, val, tabIndex, _.cloneDeep(baseTab));
1735
- //baseTab['template-content'] = '';
1736
- baseTab.iso_code = data.iso_code;
1737
- baseTab.lang_id = data.lang_id;
1738
- baseTab.language = data.language;
1739
- validId = false;
1740
- while (!validId) {
1741
- validId = true;
1742
- for (let idx = 0; idx < formData[tabIndex].selectedLanguages.length; idx += 1) {
1743
- if (!formData[idx]) {
1744
- continue;
1745
- }
1746
- if (id === formData[tabIndex][formData[tabIndex].selectedLanguages[idx]].tabKey) {
1747
- validId = false;
1748
- }
1749
- }
1750
- if (validId) {
1751
- break;
1752
- }
1753
- id = _.uniqueId();
1754
- }
1755
- baseTab.tabKey = id;
1756
- formData[tabIndex].selectedLanguages.push(data.iso_code);
1757
- formData[tabIndex][data.iso_code] = baseTab;
1758
- console.log('Add Language Event After', formData);
1759
- formData[tabIndex].activeTab = data.iso_code;
1760
- formData[tabIndex].tabKey = baseTab.tabKey;
1761
- break;
1762
- case '':
1763
- return;
1764
- default:
1765
- break;
1766
- }
1767
- const that = this;
1768
- setTimeout(() => {
1769
- that.setState({tabKey: baseTab.tabKey});
1770
- }, 0);
1771
- }
1772
- console.log('setting form data2', JSON.stringify(formData));
1773
- if (!this.props.isNewVersionFlow) {
1774
- formData[tabIndex][val.id] = data1;
1775
- } else if (this.props.isNewVersionFlow && event !== "addLanguage" && event !== "onContentChange") {
1776
- formData[tabIndex][this.props.baseLanguage][val.id] = data1;
1777
- }
1778
- console.log('setting form data3', JSON.stringify(formData));
1779
- if (formData[tabIndex].base) {
1780
- if (!this.props.isNewVersionFlow) {
1781
- formData.base[val.id] = data1;
1782
- } else {
1783
- formData.base[data1.iso_code] = formData[tabIndex][data1.iso_code];
1784
- formData.base.tabKey = formData[tabIndex].tabKey;
1785
- formData.base.activeTab = formData[tabIndex].activeTab;
1786
- formData.base.selectedLanguages = formData[tabIndex].selectedLanguages;
1787
- }
1788
- }
1789
- console.log('setting form data4', JSON.stringify(formData));
1790
- } else {
1791
- formData[val.id] = data;
1792
- }
1793
- console.log('setting form data5', JSON.stringify(formData));
1794
- if (this.props.isNewVersionFlow) {
1795
- console.log('Version Select ', data, val, event);
1796
- if (event === 'onSelect' && data === 'New Version') {
1797
- this.callChildEvent(data, val, 'addVersion', event);
1798
- } else if (event === 'onSelect' && data !== 'New Version') {
1799
- console.log('Heloo how are you', data, val);
1800
- console.log(_.findIndex(this.state.formData['template-version-options'], { key: data}));
1801
- currentTab = _.findIndex(this.state.formData['template-version-options'], { key: data}) + 1;
1802
- this.setState({currentTab, tabKey: formData[`${currentTab - 1}`].tabKey}, () => {
1803
- console.log('Current tab of state ', this.state.currentTab);
1804
- val.injectedEvents[event].call(this, this.state.formData['template-version-options'][currentTab - 1].key, formData, val);
1805
- });
1806
- }
1807
- console.log('setting form data6', JSON.stringify(formData));
1808
- if (event === 'onContentChange') {
1809
- console.log('onContentChange ', data, val, event, data.editor.getData());
1810
- // formData[`${this.state.currentTab - 1}`][formData[`${this.state.currentTab - 1}`].activeTab]['template-content'] = data.editor.getData();
1811
- // if (formData[`${this.state.currentTab - 1}`].tabKey === formData.base.tabKey) {
1812
- // formData.base[formData[`${this.state.currentTab - 1}`].activeTab][`template-content`] = data.editor.getData();
1813
- //}
1814
- }
1815
- }
1816
- console.log('setting form data7', JSON.stringify(formData));
1817
- console.log('setting form data', formData);
1818
- this.setState({formData}, () => {
1819
- this.validateForm();
1820
- });
1821
- if (event && val.injectedEvents[event]) {
1822
- if (event === "onRowClick") {
1823
- val.injectedEvents[event].call(this, data);
1824
- } else if (this.props.isNewVersionFlow && event !== 'onSelect') {
1825
- if (event === 'addLanguage') {
1826
- val.injectedEvents[event].call(this, data, formData, val);
1827
- this.setState({currentEventVal: {}, currentEvent: {}, currentEventData: {}});
1828
- } else {
1829
- val.injectedEvents[event].call(this, true, formData, val);
1830
- }
1831
- } else if (!this.props.isNewVersionFlow) {
1832
- console.log('Event trigger ', event);
1833
- val.injectedEvents[event].call(this, true, formData, val);
1834
- }
1835
- } else if (val.injectedEvents && val.injectedEvents.onChange) {
1836
- val.injectedEvents.onChange.call(this, true, formData, val);
1837
- }
1838
-
1839
- if (!((event === 'onSelect' && data === 'New Version') || event === 'onContentChange')) {
1840
- console.log('Current tab ', this.state.currentLangTab, currentTab);
1841
- this.props.onChange(formData, this.state.tabCount, currentTab);
1842
- }
1843
- }
1844
-
1845
-
1846
- hasClass(element, className) {
1847
- return (` ${element.className} `).indexOf(` ${className} `) > -1;
1848
- }
1849
- allowAddSecondaryCta = (val) => {
1850
- if (val.fieldsCount > 0) {
1851
- const errorData = _.cloneDeep(this.state.errorData);
1852
- _.forEach(Object.keys(errorData), (key) => {
1853
- if (typeof errorData[key] !== "object") {
1854
- errorData[key] = false;
1855
- } else {
1856
- _.forEach(Object.keys(errorData[key]), (innerKey) => {
1857
- errorData[key][innerKey] = false;
1858
- });
1859
- }
1860
- });
1861
- if (this.state.formData[this.state.currentTab - 1][`secondary-cta-${val.fieldsCount - 1}-label`] === "") {
1862
- errorData[this.state.currentTab - 1][`secondary-cta-${val.fieldsCount - 1}-label`] = true;
1863
- this.setState({errorData, checkValidation: true, isFormValid: false});
1864
- return false;
1865
- }
1866
- if (this.state.formData[this.state.currentTab - 1][`cta-deeplink-secondary-cta-${val.fieldsCount - 1}`] === "") {
1867
- errorData[this.state.currentTab - 1][`cta-deeplink-secondary-cta-${val.fieldsCount - 1}`] = true;
1868
- this.setState({errorData, checkValidation: true, isFormValid: false});
1869
- return false;
1870
- }
1871
- if (this.state.formData[this.state.currentTab - 1][`cta-deeplink-secondary-cta-${val.fieldsCount - 1}-select`] === "") {
1872
- errorData[this.state.currentTab - 1][`cta-deeplink-secondary-cta--${val.fieldsCount - 1}-select`] = true;
1873
- this.setState({errorData, checkValidation: true, isFormValid: false});
1874
- return false;
1875
- }
1876
- }
1877
- return true;
1878
- };
1879
- callChildEvent(data, val, event, e) {
1880
- console.log("lks 1", data);
1881
- console.log("lks 2", val);
1882
- console.log("lks 3", event);
1883
- if (!event) {
1884
- console.log('rogue event');
1885
- return;
1886
- }
1887
- console.log('calling child', data, val, event, e);
1888
- const tab = this.state.tabCount;
1889
- // const parent = this._reactInternalInstance._currentElement._owner._instance;
1890
- if (event === 'onTabChange') {
1891
- const that = this;
1892
- this.setState({tabKey: `${data}`});
1893
- setTimeout(() => {
1894
- if (this.props.isNewVersionFlow) {
1895
- const formData = _.cloneDeep(this.state.formData);
1896
- let activeTabIndex = '1';
1897
- const elems = document.getElementsByClassName("ant-tabs-tab");
1898
- console.log('elems', elems);
1899
- for (let i = 0; i < elems.length; i += 1) {
1900
- console.log('elems 2', elems.item(i));
1901
- if (elems.item(i).classList.contains("ant-tabs-tab-active")) {
1902
- activeTabIndex = i + 1;
1903
- }
1904
- }
1905
- console.log('current Tab ', JSON.stringify(activeTabIndex), formData, this.state.currentTab, this.state.currentLangTab);
1906
- formData[(this.state.currentTab - 1)].activeTab = formData[(this.state.currentTab - 1)].selectedLanguages[activeTabIndex - 1];
1907
- formData[(this.state.currentTab - 1)].tabKey = `${data}`;
1908
- if (formData[(this.state.currentTab - 1)].base) {
1909
- formData.base.activeTab = formData[(this.state.currentTab - 1)].selectedLanguages[activeTabIndex - 1];
1910
- formData.base.tabKey = `${data}`;
1911
- }
1912
- console.log('New Form Data ', formData);
1913
- that.setState({formData, currentLangTab: formData[(this.state.currentTab - 1)].activeTab, tabKey: formData[(this.state.currentTab - 1)][formData[(this.state.currentTab - 1)].activeTab].tabKey}, () => {
1914
- val.injectedEvents[event].call(that.props.parent, this.state.currentTab, formData);
1915
- });
1916
- } else {
1917
- let activeTabIndex = '1';
1918
- const elems = document.getElementsByClassName("ant-tabs-tab");
1919
- console.log('elems', elems);
1920
- for (let i = 0; i < elems.length; i += 1) {
1921
- console.log('elems 2', elems.item(i));
1922
- if (elems.item(i).classList.contains("ant-tabs-tab-active")) {
1923
- activeTabIndex = i + 1;
1924
- }
1925
- }
1926
- console.log('current Tab ', JSON.stringify(activeTabIndex));
1927
- that.setState({currentTab: activeTabIndex});
1928
- val.injectedEvents[event].call(that.props.parent, activeTabIndex);
1929
- }
1930
- }, 0);
1931
- return;
1932
- } else if (event === 'addVersion') {
1933
- this.cloneVersionData();
1934
- this.setState({ popoverVisible: false });
1935
- const that = this;
1936
- setTimeout(() => {
1937
- console.log('Add version ', data, tab, that.state.formData);
1938
- val.injectedEvents[event].call(that.props.parent, tab);
1939
- }, 0);
1940
- return;
1941
- } else if (event === 'onTagSelect') {
1942
- val.injectedEvents[event].call(this.props.parent, data, this.state.currentTab, val);
1943
- return;
1944
- } else if (event === 'markFinalVersion' || event === 'duplicateVersion' || event === 'deleteVersion' || event === 'renameVersion') {
1945
- this.setState({ popoverVisible: false });
1946
- if ((event !== 'deleteVersion' && !this.props.isNewVersionFlow) || ((event === 'deleteVersion') && this.props.schema.channel.toUpperCase() === 'EMAIL')) {
1947
- val.injectedEvents[event].call(this.props.parent, data, this.state.currentTab);
1948
- } else {
1949
- this.setState({currentEvent: val.injectedEvents[event], currentEventData: data});
1950
- }
1951
- if (event === 'markFinalVersion') {
1952
- this.markFinalTabVersion();
1953
- if (this.props.isNewVersionFlow) {
1954
- val.injectedEvents[event].call(this.props.parent, data, this.state.currentTab);
1955
- }
1956
- } else if (event === 'duplicateVersion') {
1957
- if (this.props.schema.channel.toUpperCase() === 'EMAIL') {
1958
- const formData = _.cloneDeep(this.state.formData);
1959
- formData[this.state.tabCount] = _.cloneDeep(formData[`${this.state.currentTab - 1}`]);
1960
- _.forEach(formData[this.state.tabCount].selectedLanguages, (lang) => {
1961
- const tmptabData = formData[this.state.tabCount][lang];
1962
- _.forEach(formData[this.state.tabCount][lang], (tabData, index) => {
1963
- console.log('tabData Data ', tabData, index);
1964
- if (index === 'tabKey') {
1965
- tmptabData.tabKey = _.uniqueId();
1966
- }
1967
- });
1968
- });
1969
- formData[this.state.tabCount].tabKey = formData[this.state.tabCount][formData[this.state.tabCount].activeTab].tabKey;
1970
- console.log('Duplicatte Version ', formData);
1971
- this.setState({formData, tabKey: formData[this.state.tabCount].tabKey}, () => {
1972
- val.injectedEvents[event].call(this.props.parent, formData, this.state.currentTab);
1973
- });
1974
- } else {
1975
- this.duplicateVersion();
1976
- }
1977
- } else if (event === 'deleteVersion') {
1978
- if (this.props.schema.channel.toUpperCase() === 'EMAIL') {
1979
- // this.deleteVersion(false, this.state.currentTab);
1980
- this.setState({currentEvent: val.injectedEvents[event], currentEventData: data }, () => {
1981
- this.props.setModalContent('delete-version');
1982
- });
1983
- } else {
1984
- this.handleConfirmations();
1985
- }
1986
- } else if (event === 'renameVersion') {
1987
- this.renameVersion(this.state.currentTab);
1988
- }
1989
- return;
1990
- } else if (event === 'discardValues') {
1991
- val.injectedEvents[event].call(this.props.parent, data);
1992
- if (this.props.isEdit) {
1993
- this.resetState(true, this.state.usingTabContainer);
1994
- } else {
1995
- this.resetState(false, this.state.usingTabContainer);
1996
- }
1997
- return;
1998
- } else if (event === 'onChange') {
1999
- if (val.id === 'tab-header') {
2000
- val.injectedEvents[event].call(this.props.parent, data, this.state.currentTab);
2001
- this.changeVersionName(data);
2002
- }
2003
- return;
2004
- } else if (event === "addSecondaryCta") {
2005
- if (!this.allowAddSecondaryCta(val)) {
2006
- return;
2007
- }
2008
- } else if (event === "onContentChange") {
2009
- val.injectedEvents[event].call(this.props.parent, data, val.id);
2010
- return;
2011
- } else if (event === 'deleteLanguage') {
2012
- this.setState({currentEvent: val.injectedEvents[event], currentEventData: data }, () => {
2013
- this.props.setModalContent('delete-language');
2014
- });
2015
- // const modalContent = {
2016
- // title: "Alert",
2017
- // body: "Do you really want to delete this language?",
2018
- // type: 'confirm',
2019
- // id: 'email-language-delete-modal',
2020
- // };
2021
- // debugger;
2022
- // if (this.state.formData[`${this.state.currentTab - 1}`].activeTab === this.props.baseLanguage) {
2023
- // console.log('Base Language');
2024
- // } else {
2025
- // const formData = _.cloneDeep(this.state.formData);
2026
- // const currentTab = `${this.state.currentTab - 1}`;
2027
- // const currentLang = formData[`${this.state.currentTab - 1}`].activeTab;
2028
- // const deleteLanguageIndex = formData[currentTab].selectedLanguages.indexOf(currentLang);
2029
- // console.log('deleting language', currentTab, currentLang);
2030
- // delete formData[currentTab][currentLang];
2031
- // formData[currentTab].activeTab = this.props.baseLanguage;
2032
- // formData[currentTab].selectedLanguages.splice(deleteLanguageIndex, 1);
2033
- // console.log('After Deleting Form data ', formData);
2034
- // this.setState({formData, currentLangTab: this.props.baseLanguage}, () => {
2035
- // val.injectedEvents[event].call(this.props.parent, formData, deleteLanguageIndex);
2036
- // });
2037
- // }
2038
- return;
2039
- }
2040
- console.log('Call Event ', event, data);
2041
- val.injectedEvents[event].call(this.props.parent, data);
2042
- }
2043
- openFileDialog = () => {
2044
- document.getElementById("fileName").click();
2045
- };
2046
- handleOk = (ev) => {
2047
- const id = ev.target.id;
2048
- console.log('Handle OK ', id);
2049
- this.setState({showModal: false});
2050
- if (id === "android" && this.state.androidValid) {
2051
- this.props.onSubmit(this.state.formData);
2052
- } else if (id === "ios" && this.state.iosValid) {
2053
- this.props.onSubmit(this.state.formData);
2054
- } else if (id === "sms-version-modal") {
2055
- console.log('Deleting version ', this.state.currentTab);
2056
- this.state.currentEvent.call(this.props.parent, this.state.currentEventData, this.state.currentTab);
2057
- this.setState({currentEvent: {}, currentEventData: {}});
2058
- this.deleteVersion(false, this.state.currentTab);
2059
- } else if (id === 'template-back-confirm-modal') {
2060
- const type = this.props.location.query.type;
2061
- const response = {
2062
- action: 'moveToTemplates',
2063
- value: 'ok',
2064
- };
2065
- this.props.iframeParent.postMessage(JSON.stringify(response), '*');
2066
- const isLanguageSupport = this.props.location.query.isLanguageSupport || false;
2067
- const isEdmSupport = (this.props.location.query.isEdmSupport !== "false") || false;
2068
- const module = this.props.location.query.module ? this.props.location.query.module : 'default';
2069
- this.props.router.push({
2070
- pathname: `/${this.props.schema.channel.toLowerCase()}/`,
2071
- query: type === 'embedded' ? {type: 'embedded', module, isLanguageSupport, isEdmSupport} : {module, isLanguageSupport, isEdmSupport},
2072
- });
2073
- } else if (id === "email-language-delete-modal") {
2074
- console.log('Delete languages ');
2075
- this.deleteLanguage();
2076
- this.props.handleCancelModal();
2077
- // this.setState({currentEvent: {}, currentEventData: {}});
2078
- } else if (id === 'email-version-delete-modal') {
2079
- this.deleteVersion(false, this.state.currentTab);
2080
- }
2081
- };
2082
- handleCancel = (ev) => {
2083
- const id = ev.target.id;
2084
- this.setState({showModal: false});
2085
- if (id === 'template-back-confirm-modal') {
2086
- const response = {
2087
- action: 'moveToTemplate',
2088
- value: 'cancel',
2089
- };
2090
- this.props.iframeParent.postMessage(JSON.stringify(response), '*');
2091
- }
2092
- if (this.props.handleCancelModal) {
2093
- this.props.handleCancelModal();
2094
- }
2095
- };
2096
- handleConfirmations = () => {
2097
- console.log('handling confirmations');
2098
- this.setState({showModal: true});
2099
- };
2100
-
2101
- uploadImages = (e, {files}, val) => {
2102
- e.preventDefault();
2103
- const _URL = window.URL || window.webkitURL;
2104
- const file = files[0];
2105
- const img = new Image();
2106
- img.src = _URL.createObjectURL(file);
2107
- img.onload = () => {
2108
- const fileParams = {
2109
- width: this.width,
2110
- height: this.height,
2111
- error: file.size / (1e+6) > 5,
2112
- };
2113
- this.callChildEvent({file, type: 'image', fileParams}, val, val.submitAction);
2114
- };
2115
- const event = e;
2116
- event.target.value = null;
2117
- };
2118
-
2119
- findBaseTab = () => {
2120
- const activeTabKey = this.state.formData && this.state.formData.base ? this.state.formData.base.tabKey : -1;
2121
- const formData = _.cloneDeep(this.state.formData);
2122
- let baseTab = 0;
2123
- for (let i = 0; i < this.state.tabCount; i += 1) {
2124
- if (formData[i] && formData[i].tabKey === activeTabKey) {
2125
- baseTab = i;
2126
- }
2127
- }
2128
- console.log('base tab is ', baseTab);
2129
- return baseTab;
2130
- };
2131
-
2132
- handleOnHoverItem = (isHovering, id) => {
2133
- if (isHovering) {
2134
- this.setState({hoveredItem: id});
2135
- } else {
2136
- this.setState({hoveredItem: ''});
2137
- }
2138
- }
2139
-
2140
- handleOnItemClick = (isClicked, id) => {
2141
- this.setState({clickedItem: id});
2142
- }
2143
-
2144
- populateTemplatesList(data) {
2145
- if (!data) {
2146
- return [];
2147
- }
2148
- const items = [];
2149
- data.map( (template) => {
2150
- // console.log("Templates ", template._id, " Data ", template);
2151
- const temp = {};
2152
- temp.id = template._id;
2153
- if (this.props.schema.channel.toLowerCase() === 'email') {
2154
- // console.log('Data Prepare');
2155
- const imgSrc = template && template.versions && template.versions.base ? template.versions.base.preview_http_url : '';
2156
- const ifPreviewGenerated = template && template.versions && template.versions.base ? template.versions.base.isPreviewGenerated : 0;
2157
- const content = <img src={imgSrc || ''} alt="" />;
2158
- console.log('qwerty template preview', imgSrc, template, ifPreviewGenerated, content);
2159
- temp.content = (
2160
- <div
2161
- className="sms-template-content">
2162
- <div className={`sms-text ${this.state.clickedItem === template._id ? 'sms-text-blurred' : ''}`}>
2163
- {content}
2164
- </div>
2165
- {/*template._id === this.state.clickedItem ? <CapButton onClick={(e) => this.handleEditClick(e, template._id)} className="edit-button" type="secondary">{type === 'embedded' ? this.props.intl.formatMessage(messages.selectButton) : this.props.intl.formatMessage(messages.editButton)}</CapButton> : ''*/}
2166
- {/*template._id === this.state.clickedItem ? <CapButton onClick={() => this.handlePreviewClick(template)} className="preview-button" type="cancel">{this.props.intl.formatMessage(messages.previewButton)}</CapButton> : ''*/}
2167
- </div>);
2168
- }
2169
- // temp.footer = (
2170
- // <div className="footer-container">
2171
- // <div className="card-title">
2172
- // <span className="template-name" style={{ fontWeight: `${this.props.schema.channel.toLowerCase() === 'wechat' ? '400' : '600'}` }}>
2173
- // { template && template.versions && template.versions.history && template.versions.history.length > 1 && this.props.schema.channel.toLowerCase() !== 'mobilepush' && <i style={{fontSize: '16px', margin: '0 8px 0 0', verticalAlign: 'middle'}} className="material-icons">filter_none</i>}
2174
- // {template.name}
2175
- // </span>
2176
- // </div>
2177
- // </div>
2178
- // );
2179
- items.push(temp);
2180
- return true;
2181
- });
2182
- return items;
2183
- }
2184
-
2185
- handleAddLanguageFlow(data, val, event) {
2186
- this.setState({currentEventData: data, currentEventVal: val, currentEvent: event, customPopoverVisible: false}, () => {
2187
- this.props.setModalContent('add-language', data);
2188
- });
2189
- }
2190
-
2191
- renderColLabelSection(section, childIndex) {
2192
- // const schema = this.props.schema
2193
- const fields = [];
2194
- _.forEach(section.inputFields, (val) => {
2195
- const row = [];
2196
- const columns = [];
2197
- const type = val.type;
2198
- const styling = val.styling;
2199
- if (!this.props.isNewVersionFlow && !val.standalone && !val.onlyDisplay && this.props.usingTabContainer && !this.state.formData[`${this.state.currentTab - 1}`]) {
2200
- return true;
2201
- }
2202
- if (!val.onlyDisplay && !val.standalone && (!this.state.formData[`${this.state.currentTab - 1}`] || (!this.state.formData[`${this.state.currentTab - 1}`][val.id] && this.state.formData[`${this.state.currentTab - 1}`][val.id] === null))) {
2203
- return true;
2204
- }
2205
- if (!val.onlyDisplay && !val.standalone && (!this.state.errorData[`${this.state.currentTab - 1}`] || (!this.state.errorData[`${this.state.currentTab - 1}`][val.id] && this.state.errorData[`${this.state.currentTab - 1}`][val.id] === null))) {
2206
- return true;
2207
- }
2208
- // console.log('rendering val', val, this.state.formData[`${this.state.currentTab - 1}`][val.id], this.state.usingTabContainer && !val.standalone);
2209
- columns.push(
2210
- <Col key="label" span={4}>
2211
- <Label style={val.labelStyle ? val.labelStyle : {}}>{val.label}</Label>
2212
- </Col>
2213
- );
2214
- let ifError = false;
2215
- const isVersionEnable = (this.state.usingTabContainer && !val.standalone);
2216
- if (val.primitive) {
2217
- if (val.id === "mark-final-version-label") {
2218
- const baseTab = this.findBaseTab();
2219
- if ((baseTab + 1) === childIndex) {
2220
- return true;
2221
- }
2222
- }
2223
- columns.push(
2224
- <Col key={val.id} span={val.width}>
2225
- {this.renderPrimitiveElement(val, childIndex)}
2226
- </Col>
2227
- );
2228
- return true;
2229
- }
2230
- switch (type) {
2231
- case "input":
2232
- if (styling === 'semantic') {
2233
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2234
- console.log('input error', ifError);
2235
- columns.push(
2236
- <Col key={val.id} span={val.width}>
2237
- <CapInput
2238
- id={val.id}
2239
- errorMessage={val.errorMessage ? val.errorMessage : ''}
2240
- className={`input-primary chart-name-input${ifError ? ' error' : ''}`}
2241
- // fluid={val.fluid}
2242
- style={val.style ? val.style : {}}
2243
- placeholder={val.placeholder}
2244
- onChange={(e) => this.updateFormData(e.target.value, val)}
2245
- defaultValue={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2246
- value={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2247
- disabled={val.disabled}
2248
- />
2249
- </Col>
2250
- );
2251
- }
2252
- break;
2253
- case "SmsEditor":
2254
- columns.push(
2255
- <Col span={5} key="input">
2256
- <SmsEditor
2257
- id={val.id}
2258
- content={this.state.formData[val.id]}
2259
- onDataChange={(data) => this.updateFormData(data.value, val)}
2260
- />
2261
- </Col>
2262
- );
2263
- break;
2264
- case "textarea":
2265
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2266
- if (styling === 'semantic') {
2267
- columns.push(
2268
- <Col key="input" span={val.width}>
2269
- <CapTextArea
2270
- id={val.id}
2271
- className={`${ifError ? 'error' : ''}`}
2272
- errorMessage={val.errorMessage ? val.errorMessage : ''}
2273
- autosize={val.autosize ? val.autosizeParams : false}
2274
- onChange={(e) => this.updateFormData(e.target.value, val)}
2275
- style={val.style ? val.style : {}}
2276
- defaultValue={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2277
- value={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2278
- rows={20}
2279
- disabled={val.disabled}
2280
- cols={20}
2281
- />
2282
- </Col>
2283
- );
2284
- }
2285
- break;
2286
- case "contentPreview":
2287
- const content = isVersionEnable ? this.state.formData[this.state.currentTab - 1]['sms-editor'] : this.state.formData['sms-editor'];
2288
- const charList = updateCharCount(content).char_list;
2289
- columns.push(<CapColumn id={val.id} className={"preview-chars"} span={val.width}>
2290
- {charList.map((char) => char)}
2291
- </CapColumn>);
2292
- case "checkbox":
2293
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2294
- if (styling === 'semantic') {
2295
- columns.push(
2296
- <Col key="input" span={val.width} offset={val.offset}>
2297
- <CapCheckbox
2298
- className={`${ifError ? 'error' : ''}`}
2299
- errorMessage={val.errorMessage ? val.errorMessage : ''}
2300
- style={val.style ? val.style : {}}
2301
- onChange={(e) => this.updateFormData(e, val)}
2302
- checked={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2303
- defaultChecked={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2304
- disabled={val.disabled}
2305
- />
2306
- </Col>
2307
- );
2308
- }
2309
- break;
2310
- case "tag-list":
2311
- columns.push(
2312
- <Col key={`input-${val.id}`} span={10} offset={val.offset}>
2313
- <TagList
2314
- key={`input-${val.id}`}
2315
- moduleFilterEnabled={this.props.location && this.props.location.query && this.props.location.query.type !== 'embedded'}
2316
- label={val.label ? val.label : ''}
2317
- onTagSelect={(data) => this.callChildEvent(data, val, 'onTagSelect')}
2318
- onContextChange={this.props.onContextChange}
2319
- location={this.props.location}
2320
- tags={this.props.tags ? this.props.tags : []}
2321
- injectedTags={this.props.injectedTags ? this.props.injectedTags : {}}
2322
- className={val.className ? val.className : ''}
2323
- id={val.id}
2324
- userLocale={this.props.userLocale}
2325
- />
2326
- </Col>
2327
- );
2328
- break;
2329
- case "tabs":
2330
- columns.push(
2331
- <Col key="input" span={10}>
2332
- <TagList
2333
- onTagSelect={(data) => this.callChildEvent(data, val, 'onTagSelect')}
2334
- />
2335
- </Col>
2336
- );
2337
- break;
2338
- case "sms-preview": {
2339
- let content = "";
2340
- if (this.state.usingTabContainer && !this.state.formData[`${this.state.currentTab - 1}`]) {
2341
- return true;
2342
- }
2343
- content = isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][`sms-editor${this.state.currentTab > 1 ? this.state.currentTab : ''}`] : this.state.formData[val.id];
2344
- const unicodeEnabled = isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][`unicode-validity${this.state.currentTab > 1 ? this.state.currentTab : ''}`] : this.state.formData['unicode-validity'];
2345
- columns.push(
2346
- <Col key="input" span={10}>
2347
- <TemplatePreview
2348
- channel={val.channel ? val.channel : 'SMS'}
2349
- content={content}
2350
- charCounterEnabled={val.charCounterEnabled}
2351
- unicodeEnabled={unicodeEnabled}
2352
- >
2353
- </TemplatePreview>
2354
- </Col>
2355
- );
2356
- break;
2357
- }
2358
- case "popover":
2359
- columns.push(
2360
- <CapPopover
2361
- trigger={val.trigger}
2362
- placement={val.placement}
2363
- visible={this.state.popoverVisible && (this.props.isNewVersionFlow || this.state.currentTab === childIndex || !childIndex)}
2364
- onVisibleChange={this.handleVisibleChange}
2365
- content={
2366
- _.forEach(val.content.sections, (contentSection) => {
2367
- this.renderSection(contentSection);
2368
- })
2369
- }
2370
- >
2371
- {
2372
- _.forEach(val.value.sections, (popoverSection) => {
2373
- this.renderSection(popoverSection);
2374
- })
2375
- }
2376
- </CapPopover>
2377
- );
2378
- break;
2379
- case "select": {
2380
- const options = (this.state.formData[`${val.id}-options`]) ? (this.state.formData[`${val.id}-options`]) : val.options;
2381
- columns.push(
2382
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width}>
2383
- <CapSelect
2384
- id={val.id}
2385
- placeholder={val.placeholder ? val.placeholder : ''}
2386
- options={options}
2387
- style={val.style ? val.style : {}}
2388
- onSelect={(data) => this.updateFormData(data, val, 'onSelect')}
2389
- value={(this.state.formData[val.id] && this.state.formData[val.id] !== '' ? this.state.formData[val.id] : undefined)}
2390
- disabled={val.disabled}
2391
- />
2392
- </Col>
2393
- );
2394
- }
2395
- break;
2396
- case "ckeditor":
2397
- console.log('CKEditor Data 1', this.state.formData, val.id, this.state.currentTab);
2398
- columns.push(
2399
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width}>
2400
- <CKEditor
2401
- id={val.id}
2402
- content={(this.state.formData[`${this.state.currentTab - 1}`][val.id] ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : '')}
2403
- events={val.events}
2404
- getEditorInstanse={val.getEditorInstanse}
2405
- // this.callChildEvent(data, val, 'addVersion', event);
2406
- handleContentChange={(event) => this.callChildEvent(event, val, 'onContentChange')}
2407
- />
2408
- </Col>
2409
- );
2410
- break;
2411
- case "edmeditor": {
2412
- // if (!this.state.formData[`${this.state.currentTab - 1}`]) {
2413
- // return true;
2414
- // }
2415
- let langTab = 1;
2416
- if (val.id.match(/edmeditor/g)) {
2417
- if (val.length > 9 && val.id.charAt(9)) {
2418
- langTab = val.id.charAt(9);
2419
- }
2420
- }
2421
- const edmSrc = this.state.formData[`${this.state.currentTab - 1}`][this.state.currentLangTab][`edmeditor${langTab > 1 ? langTab : ''}src`];
2422
- console.log('Rendering EDM Editor collabel ', edmSrc, this.state.formData[`${this.state.currentTab - 1}`]);
2423
- if (!edmSrc) {
2424
- return false;
2425
- }
2426
- console.log('Rendering EDM Editor 2 collabel');
2427
- columns.push(
2428
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width}>
2429
- <EDMEditor
2430
- id={val.id}
2431
- getEditorInstanse={this.getEditorInstanse}
2432
- edmSrc={edmSrc}
2433
- />
2434
- </Col>
2435
- );
2436
- }
2437
- break;
2438
- default:
2439
- break;
2440
- }
2441
- row.push(
2442
- <Row>
2443
- {
2444
- _.forEach(columns, (value) => {
2445
- if (value) {
2446
- return value;
2447
- }
2448
- return value;
2449
- })
2450
- }
2451
- </Row>
2452
- );
2453
-
2454
- fields.push(row);
2455
- return true;
2456
- });
2457
- _.forEach(section.actionFields, (val) => {
2458
- const row = [];
2459
- const columns = [];
2460
- const type = val.type;
2461
- const styling = val.styling;
2462
- switch (type) {
2463
- case "button":
2464
- if (styling === 'semantic' && val.metaType === 'submit-button') {
2465
- columns.push(
2466
- <Col>
2467
- <CapButton
2468
- onClick={(data) => val.id === 'save-button' ? this.saveForm() : this.callChildEvent(data, val, val.submitAction)}>
2469
- {val.value}
2470
- </CapButton>
2471
- </Col>
2472
- );
2473
- }
2474
- break;
2475
- default:
2476
- break;
2477
- }
2478
- row.push(columns);
2479
- fields.push(row);
2480
- });
2481
- return fields;
2482
- }
2483
-
2484
- renderParentSection(section, childIndex) {
2485
- const cols = [];
2486
- section.childSections.map( (childSection) => {
2487
- const renderedChildSection = this.renderSection(childSection, childIndex);
2488
- cols.push(<Col style={childSection.colStyle ? childSection.colStyle : {}}offset={childSection.offset} span={childSection.width}>{renderedChildSection}</Col>);
2489
- return true;
2490
- });
2491
- const row = (<Row style={section.rowStyle ? section.rowStyle : {}}>
2492
- {
2493
- _.forEach(cols, (value) => {
2494
- if (value) {
2495
- return value;
2496
- }
2497
- return value;
2498
- })
2499
- }
2500
- </Row>);
2501
- return row;
2502
- }
2503
-
2504
- renderSection(section, childIndex) {
2505
- switch (section.type) {
2506
- case "col-label":
2507
- return this.renderColLabelSection(section, childIndex);
2508
- case "multicols":
2509
- return this.renderMultiColSection(section, childIndex);
2510
- case "parent":
2511
- return this.renderParentSection(section, childIndex);
2512
- default:
2513
- break;
2514
- }
2515
- return null;
2516
- }
2517
-
2518
- renderPrimitiveElement(val, childIndex) {
2519
- const type = val.type;
2520
- const tabName = this.state.formData[childIndex - 1] && this.state.formData[childIndex - 1].name ? this.state.formData[childIndex - 1].name : `${val.value} ${childIndex}`;
2521
- let value = val.dynamicTab ? tabName : val.value;
2522
- switch (type) {
2523
- case "span":
2524
- return <span id={`${val.id}${childIndex > 1 ? childIndex : ''}`}>{val.dynamicTab ? tabName : val.value}</span>;
2525
- case "div":
2526
- if (this.state.formData[`${this.state.currentTab - 1}`] && this.state.formData[`${this.state.currentTab - 1}`][val.id] && this.state.formData[`${this.state.currentTab - 1}`][val.id].trim() !== "") {
2527
- value = this.state.formData[`${this.state.currentTab - 1}`][val.id];
2528
- }
2529
- return (<div
2530
- className={val.className ? val.className : ''}
2531
- id={`${val.id}${childIndex > 1 ? childIndex : ''}`}
2532
- onClick={(data) => this.callChildEvent(data, val, val.submitAction)}
2533
- style={val.style ? val.style : {}}
2534
- onInput={(e) => { e.stopPropagation(); this.callChildEvent(e.target.textContent, val, 'onChange'); }}
2535
- >{value}</div>);
2536
- default:
2537
- return '';
2538
- }
2539
- }
2540
-
2541
- renderMultiColSection(section, childIndex) {
2542
- const fields = [];
2543
- let contentSections = [];
2544
- let popoverSections = [];
2545
- const self = this;
2546
- _.forEach(section.inputFields, (field) => {
2547
- const columns = [];
2548
- _.forEach(field.cols, (val) => {
2549
- const type = val.type;
2550
- const styling = val.styling;
2551
- const isVersionEnable = (this.state.usingTabContainer && !val.standalone);
2552
- if (val.id.match(/edmeditor/g)) {
2553
- console.log('current language first', val.id);
2554
- }
2555
- console.log('Multi col Render 1', val.id, !val.standalone, !val.onlyDisplay, (!this.state.formData[`${this.state.currentTab - 1}`] || (!this.state.formData[`${this.state.currentTab - 1}`] && this.state.errorData[`${this.state.currentTab - 1}`][val.id] === null)), this.state.formData[`${this.state.currentTab - 1}`], this.state.currentTab);
2556
- console.log('Multi col render ', val, this.state.formData, this.state.errorData, this.state.currentTab);
2557
- if (!this.props.isNewVersionFlow && !val.standalone && !val.onlyDisplay && isVersionEnable && !this.state.formData[`${this.state.currentTab - 1}`]) {
2558
- return true;
2559
- }
2560
- if (!val.standalone && !val.onlyDisplay &&
2561
- (!this.state.formData[`${this.state.currentTab - 1}`] ||
2562
- (!this.props.isNewVersionFlow && !this.state.formData[`${this.state.currentTab - 1}`] &&
2563
- this.state.errorData[`${this.state.currentTab - 1}`][val.id] === null)) &&
2564
- (this.props.isNewVersionFlow && !this.state.formData[`${this.state.currentTab - 1}`] &&
2565
- this.state.errorData[`${this.state.currentTab - 1}`] && this.state.errorData[`${this.state.currentTab - 1}`][val.id] === null)) {
2566
- return true;
2567
- }
2568
- if (!val.onlyDisplay && !val.standalone &&
2569
- (!this.props.isNewVersionFlow && (!this.state.errorData[`${this.state.currentTab - 1}`] ||
2570
- (!this.state.errorData[`${this.state.currentTab - 1}`] &&
2571
- this.state.errorData[`${this.state.currentTab - 1}`][val.id] === null)))) {
2572
- return true;
2573
- }
2574
- console.log('Render 3');
2575
- let ifError = false;
2576
- if (val.primitive) {
2577
- if (val.id === "mark-final-version-label") {
2578
- const baseTab = this.findBaseTab();
2579
- if ((baseTab + 1) === childIndex) {
2580
- return true;
2581
- }
2582
- }
2583
- columns.push(
2584
- <Col style={val.colStyle ? val.colStyle : {}} offset={val.offset} key={val.id} span={val.width}>
2585
- {this.renderPrimitiveElement(val, childIndex)}
2586
- </Col>
2587
- );
2588
- return true;
2589
- }
2590
- console.log('Render 4');
2591
- switch (type) {
2592
- case "input":
2593
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2594
- console.log('input error', ifError);
2595
- if (styling === 'semantic') {
2596
- columns.push(
2597
- <Col key={val.id} span={val.width}>
2598
- <CapInput
2599
- id={val.id}
2600
- errorMessage={val.errorMessage ? val.errorMessage : ''}
2601
- className={`input-primary chart-name-input${ifError ? ' error' : ''}`}
2602
- // fluid={val.fluid}
2603
- style={val.style ? val.style : {}}
2604
- placeholder={val.placeholder}
2605
- onChange={(e) => this.updateFormData(e.target.value, val)}
2606
- value={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2607
- defaultValue={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2608
- disabled={val.disabled}
2609
- />
2610
- </Col>
2611
- );
2612
- }
2613
- break;
2614
- case "SmsEditor":
2615
- columns.push(
2616
- <Col span={5} key="input">
2617
- <SmsEditor
2618
- id={val.id}
2619
- content={this.state.formData[val.id]}
2620
- onDataChange={(data) => this.updateFormData(data.value, val)}
2621
- />
2622
- </Col>
2623
- );
2624
- break;
2625
- case "textarea":
2626
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2627
- if (styling === 'semantic') {
2628
- columns.push(
2629
- <Col key="input" span={val.width} offset={val.offset}>
2630
- <CapTextArea
2631
- id={val.id}
2632
- placeholder={val.placeholder ? val.placeholder : ''}
2633
- disabled={val.disabled}
2634
- className={`${ifError ? 'error' : ''}`}
2635
- errorMessage={val.errorMessage ? val.errorMessage : ''}
2636
- autosize={val.autosize ? val.autosizeParams : false}
2637
- onChange={(e) => this.updateFormData(e.target.value, val)}
2638
- style={val.style ? val.style : {}}
2639
- defaultValue={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2640
- value={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2641
- rows={10}
2642
- cols={2}
2643
- />
2644
- </Col>
2645
- );
2646
- }
2647
- break;
2648
- case "checkbox":
2649
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2650
- if (styling === 'semantic') {
2651
- columns.push(
2652
- <Col key="input" span={val.width} offset={val.offset}>
2653
- <CapCheckbox
2654
- className={`${ifError ? 'error' : ''}`}
2655
- errorMessage={val.errorMessage ? val.errorMessage : ''}
2656
- onChange={(e) => this.updateFormData(e.target.checked, val)}
2657
- checked={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2658
- defaultChecked={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2659
- style={val.style ? val.style : {}}
2660
- disabled={val.disabled}
2661
- >
2662
- {val.label}
2663
- </CapCheckbox>
2664
- </Col>
2665
- );
2666
- }
2667
- break;
2668
- case "radio":
2669
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2670
- if (styling === 'semantic') {
2671
- columns.push(
2672
- <Col key={`input-${val.id}`} span={val.width} offset={val.offset}>
2673
- <CapRadio
2674
- className={`${ifError ? 'error' : ''}`}
2675
- errorMessage={val.errorMessage ? val.errorMessage : ''}
2676
- onChange={(e) => this.updateFormData(e.target.checked, val)}
2677
- checked={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2678
- defaultChecked={isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][val.id] : this.state.formData[val.id]}
2679
- style={val.style ? val.style : {}}
2680
- >
2681
- {val.label}
2682
- </CapRadio>
2683
- </Col>
2684
- );
2685
- }
2686
- break;
2687
- case 'radioGroup':
2688
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2689
- if (styling === 'semantic') {
2690
- columns.push(
2691
- <Col key={`input-${val.id}`} span={val.width} offset={val.offset}>
2692
- <CapRadioGroup
2693
- key={`${val.id}-radio-group`}
2694
- className={`${ifError ? 'error' : ''}`}
2695
- errorMessage={val.errorMessage ? val.errorMessage : ''}
2696
- onChange={(e) => this.updateFormData(e.target.value, val)}
2697
- style={val.style ? val.style : {}}
2698
- value={this.state.formData[`${self.state.currentTab - 1}`] && this.state.formData[`${self.state.currentTab - 1}`][val.id] !== "" ? this.state.formData[`${self.state.currentTab - 1}`][val.id] : val.value}
2699
- name={val.name ? val.name : `${val.id}-name`}
2700
- options={val.options}
2701
- disabled={val.disabled}
2702
- >
2703
- </CapRadioGroup>
2704
- {/*{ifError ?*/}
2705
- {/*<div className="error"> {val.errorMessage}</div>*/}
2706
- {/*:*/}
2707
- {/*""*/}
2708
- {/*}*/}
2709
- </Col>
2710
- );
2711
- }
2712
- break;
2713
- case 'image':
2714
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2715
- columns.push(
2716
- <Col key={`input-${val.id}${self.state.currentTab - 1}`} style={val.style} span={val.width} offset={val.offset}>
2717
- <div>
2718
- <div className={`image-container ${ifError ? 'error' : ''}`}>
2719
- {self.state && !!self.state.formData[`${self.state.currentTab - 1}`].image ?
2720
- <img src={self.state.formData[`${self.state.currentTab - 1}`].image} alt={val.alt} style={val.style}/>
2721
- :
2722
- <div style={{width: "100%", textAlign: "center"}}><span className="image-placeholder">{val.placeholder}</span></div>
2723
- }
2724
- </div>
2725
- {ifError && <span className="error">{val.errorMessage}</span>}
2726
- </div>
2727
- </Col>
2728
- );
2729
- break;
2730
- case 'upload':
2731
- columns.push(
2732
- <Col span={val.width} offset={val.offset} style={val.style}>
2733
- <form encType="multipart/form-data" id={val.id}>
2734
- <input key={val.id} style={{ display: 'none'}} id="fileName" type="file" onChange={(e) => this.uploadImages(e, {files: e.target.files}, val)} accept="image/*" />
2735
- <CapButton type="secondary" onClick={(e) => this.openFileDialog(e)} style={{float: 'right'}}>
2736
- {val.label}
2737
- </CapButton>
2738
- </form>
2739
- </Col>
2740
- );
2741
- break;
2742
- case "table":
2743
- columns.push(
2744
- <CapTable dataSource={self.props.iosCtasData} loading={self.props.iosCtasData ? !self.props.iosCtasData.length : true} onRowClick={(row) => this.updateFormData(row, val, "onRowClick" )} pagination={val.pagination}>
2745
- {_.map(val.columns, (col) => <Column {...col}/>)}
2746
- </CapTable>
2747
- );
2748
- break;
2749
- case "tag-list":
2750
- columns.push(
2751
- <Col key={`input-${val.id}`} offset={val.offset} span={val.width ? val.width : ''} style={val.style ? val.style : {marginBottom: '16px'}}>
2752
- <TagList
2753
- key={`input-${val.id}`}
2754
- moduleFilterEnabled={this.props.location && this.props.location.query && this.props.location.query.type !== 'embedded'}
2755
- label={val.label ? val.label : ''}
2756
- onTagSelect={(data) => this.callChildEvent(data, val, 'onTagSelect')}
2757
- onContextChange={this.props.onContextChange}
2758
- location={this.props.location}
2759
- tags={this.props.tags ? this.props.tags : []}
2760
- injectedTags={this.props.injectedTags ? this.props.injectedTags : {}}
2761
- className={val.className ? val.className : ''}
2762
- id={val.id}
2763
- userLocale={this.props.userLocale}
2764
- />
2765
- </Col>
2766
- );
2767
- break;
2768
- case "button":
2769
- if (styling === 'semantic' && val.metaType === 'submit-button') {
2770
- columns.push(
2771
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width} offset={val.offset}>
2772
- <CapButton
2773
- type={val.buttonType}
2774
- icon={val.icon}
2775
- disabled={val.disabled ? val.disabled : false}
2776
- onClick={(data) => val.id === 'save-button' ? this.saveForm() : this.callChildEvent(data, val, val.submitAction)}>
2777
- {val.value}
2778
- </CapButton>
2779
- </Col>
2780
- );
2781
- }
2782
- break;
2783
-
2784
- case "sms-preview": {
2785
- let content = "";
2786
- if (this.state.usingTabContainer && !this.state.formData[`${this.state.currentTab - 1}`]) {
2787
- return true;
2788
- }
2789
- content = isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][`sms-editor${this.state.currentTab > 1 ? this.state.currentTab : ''}`] : this.state.formData[val.id];
2790
- const unicodeEnabled = isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][`unicode-validity${this.state.currentTab > 1 ? this.state.currentTab : ''}`] : this.state.formData['unicode-validity'];
2791
- columns.push(
2792
- <Col key="input" span={23} offset={1}>
2793
- <TemplatePreview
2794
- key={val.id}
2795
- style={val.customStyling ? val.customStyling : {}}
2796
- channel={val.channel ? val.channel : 'SMS'}
2797
- content={content}
2798
- charCounterEnabled={val.charCounterEnabled}
2799
- unicodeEnabled={unicodeEnabled}
2800
- >
2801
- </TemplatePreview>
2802
- </Col>
2803
- );
2804
- }
2805
- break;
2806
- case "line-preview": {
2807
- console.log("lipak inside imagePreview@@@", this.state.formData['0'].imagePreview);
2808
- const content = {
2809
- bodyText: isVersionEnable ? this.state.formData[`${this.state.currentTab - 1}`][`message-editor${this.state.currentTab > 1 ? this.state.currentTab : ''}`] : this.state.formData[val.id],
2810
- bodyImage: this.state.formData[`${this.state.currentTab - 1}`].imagePreview,
2811
- };
2812
- if (!this.state.formData[`${this.state.currentTab - 1}`]) {
2813
- return true;
2814
- }
2815
- console.log("lipak inside formdata@@@", content);
2816
- columns.push(
2817
- <Col key="input" span={23} offset={1}>
2818
- <TemplatePreview
2819
- key={val.id}
2820
- style={val.customStyling ? val.customStyling : {}}
2821
- channel={val.channel}
2822
- content={content}
2823
- >
2824
- </TemplatePreview>
2825
- </Col>
2826
- );
2827
- }
2828
- break;
2829
- case "mobile-push-preview":
2830
- if (!this.state.formData[`${this.state.currentTab - 1}`]) {
2831
- return true;
2832
- }
2833
- columns.push(
2834
- <Col key="input" span={23} offset={1}>
2835
- <TemplatePreview
2836
- key={val.id}
2837
- device={val.device ? val.device : 'android'}
2838
- style={val.customStyling ? val.customStyling : {}}
2839
- channel={val.channel}
2840
- content={{
2841
- header: this.state.formData[`${this.state.currentTab - 1}`][val.content.title],
2842
- bodyText: this.state.formData[`${this.state.currentTab - 1}`][val.content.message],
2843
- bodyImage: this.state.formData[`${this.state.currentTab - 1}`].image,
2844
- actions: [
2845
- {label: this.state.formData[`${this.state.currentTab - 1}`][val.content.secondaryCta1]},
2846
- {label: this.state.formData[`${this.state.currentTab - 1}`][val.content.secondaryCta2]},
2847
- ],
2848
- appName: val.content.appName,
2849
- }}
2850
- >
2851
- </TemplatePreview>
2852
- </Col>
2853
- );
2854
- break;
2855
- case "popover":
2856
- contentSections = val.content.sections.map( (contentSection) => {
2857
- const result = this.renderSection(contentSection, childIndex);
2858
- return result;
2859
- });
2860
- popoverSections = val.value.sections.map( (popoverSection) => {
2861
- const result = this.renderSection(popoverSection, childIndex);
2862
- return result;
2863
- });
2864
- columns.push(
2865
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width} offset={val.offset}>
2866
- <CapPopover
2867
- trigger={val.trigger}
2868
- placement={val.placement}
2869
- visible={this.state.popoverVisible && (this.props.isNewVersionFlow || this.state.currentTab === childIndex || !childIndex)}
2870
- onVisibleChange={this.handleVisibleChange}
2871
- content={
2872
- _.forEach(contentSections, (contentSection) => {
2873
- if (contentSection) {
2874
- return contentSection;
2875
- }
2876
- return contentSection;
2877
- })
2878
- }
2879
- >
2880
- {
2881
- _.forEach(popoverSections, (popoverSection) => {
2882
- if (popoverSection) {
2883
- return popoverSection;
2884
- }
2885
- return popoverSection;
2886
- })
2887
- }
2888
- </CapPopover>
2889
- </Col>
2890
- );
2891
- break;
2892
-
2893
- case "icon":
2894
- if (val.id === "base-version-icon") {
2895
- const baseTab = this.findBaseTab();
2896
- if ((baseTab + 1) !== childIndex) {
2897
- return true;
2898
- }
2899
- }
2900
- columns.push(
2901
- <Col
2902
- key={`icon-${val.id}`}
2903
- id={val.id}
2904
- offset={val.offset}
2905
- width={val.width ? val.width : 1}
2906
- onClick={(data) => this.callChildEvent(data, val, val.submitAction)}
2907
- className={val.className ? val.className : ''}
2908
- style={val.colStyle ? val.colStyle : {}}
2909
- >
2910
- <i style={val.style ? val.style : {}} className="material-icons">{val.value ? val.value : '&#xE313;'}</i>
2911
- </Col>
2912
- );
2913
- break;
2914
- case "select": {
2915
- ifError = this.state.checkValidation && (isVersionEnable ? this.state.errorData[`${this.state.currentTab - 1}`][val.id] : this.state.errorData[val.id]);
2916
- const options = (this.state.formData[`${val.id}-options`]) ? (this.state.formData[`${val.id}-options`]) : val.options;
2917
- columns.push(
2918
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width}>
2919
- <CapSelect
2920
- id={val.id}
2921
- options={options}
2922
- placeholder={val.placeholder ? val.placeholder : ''}
2923
- style={val.style ? val.style : {}}
2924
- onSelect={(data) => this.updateFormData(data, val, 'onSelect')}
2925
- value={isVersionEnable ? this.state.formData[this.state.currentTab - 1][val.id] : this.state.formData[val.id]}
2926
- disabled={val.disabled}
2927
- />
2928
- {ifError && val.errorMessage &&
2929
- <span className={'error'}>{val.errorMessage}</span>
2930
- }
2931
- </Col>
2932
- );
2933
- }
2934
- break;
2935
- case "ckeditor": {
2936
- if (_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`])) {
2937
- return true;
2938
- }
2939
- let langIndex = 0;
2940
- if (val.id.indexOf('template-content') > -1 && val.id !== 'template-content') {
2941
- langIndex = parseInt(val.id.replace('template-content', ''), 10) - 1;
2942
- }
2943
- console.log('CKEditor Data 2', this.state.formData, this.state.formData[`${this.state.currentTab - 1}`], val, this.state.currentTab, this.state.currentLangTab, langIndex);
2944
- const currentLang = (!_.isEmpty(this.state.formData) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`]) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages) && this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex]) ? this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex] : this.props.baseLanguage;
2945
- const content = (!_.isEmpty(this.state.formData) && this.state.formData[`${this.state.currentTab - 1}`][currentLang]['template-content'] ? this.state.formData[`${this.state.currentTab - 1}`][currentLang]['template-content'] : '');
2946
- console.log('ckeditor current lang', currentLang, content);
2947
- if (this.state.formData[`${this.state.currentTab - 1}`][currentLang].is_drag_drop) {
2948
- // content = "";
2949
- }
2950
- columns.push(
2951
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width}>
2952
- <CKEditor
2953
- id={val.id}
2954
- content={content}
2955
- events={val.events}
2956
- getEditorInstanse={(evt, id) => val.injectedEvents.getEditorInstanse.call(this, evt, id)}
2957
- handleContentChange={(event) => this.callChildEvent(event, val, 'onContentChange')}
2958
- />
2959
- </Col>
2960
- );
2961
- }
2962
- break;
2963
- case "edmeditor": {
2964
- // if (!this.state.formData[`${this.state.currentTab - 1}`]) {
2965
- // return true;
2966
- // }
2967
- let langTab = 1;
2968
- if (val.id.match(/edmeditor/g)) {
2969
- console.log('current language found match', val.id);
2970
- if (val.id.length > 9 && val.id.charAt(9)) {
2971
- console.log('current language in if');
2972
- langTab = val.id.charAt(9);
2973
- }
2974
- }
2975
- const supportedLanguages = this.state.formData[this.state.currentTab - 1].selectedLanguages;
2976
- // let langIndex = 0;
2977
- // if (val.id.indexOf('edmeditor') > -1 && val.id !== 'edmeditorsrc') {
2978
- // const test = val.id.replace('src', '');
2979
- // langIndex = parseInt(test.replace('edmeditor', ''), 10) - 1;
2980
- // }
2981
- // const currentLang = (!_.isEmpty(this.state.formData) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`]) && !_.isEmpty(this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages) && this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex]) ? this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages[langIndex] : this.props.baseLanguage;
2982
- const currentLang = supportedLanguages[langTab - 1];
2983
- const edmSrc = this.state.formData[`${this.state.currentTab - 1}`][currentLang] && this.state.formData[`${this.state.currentTab - 1}`][currentLang][`edmeditor${this.state.currentTab > 1 ? this.state.currentTab : ''}src`];
2984
- console.log('current language', langTab, supportedLanguages, currentLang, val.id, edmSrc);
2985
- console.log('Rendering EDM Editor multicol', edmSrc, this.state.formData[`${this.state.currentTab - 1}`]);
2986
- if (!edmSrc) {
2987
- return false;
2988
- }
2989
- console.log('current language rendered', langTab, val.id);
2990
- console.log('Rendering EDM Editor 2 multicol');
2991
- columns.push(
2992
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width}>
2993
- <EDMEditor
2994
- id={val.id}
2995
- getEditorInstanse={this.getEditorInstanse}
2996
- edmSrc={edmSrc}
2997
- />
2998
- </Col>
2999
- );
3000
- }
3001
- break;
3002
- case "customPopover": {
3003
- if (!this.state.formData[`${this.state.currentTab - 1}`]) {
3004
- return true;
3005
- }
3006
- columns.push(
3007
- <Col style={val.colStyle ? val.colStyle : {}} span={val.width}>
3008
- <CustomPopOver
3009
- id={val.id}
3010
- popOverList={this.props.supportedLanguages}
3011
- excludeList={this.state.formData[`${this.state.currentTab - 1}`].selectedLanguages}
3012
- handlePopOverClick={(data) => this.handleAddLanguageFlow(data, val, "addLanguage")}
3013
- visible={this.state.customPopoverVisible}
3014
- onVisibleChange={this.handleCustomPopoverVisibleChange}
3015
- />
3016
- </Col>
3017
- );
3018
- }
3019
- break;
3020
- default:
3021
- break;
3022
- }
3023
- return true;
3024
- });
3025
- const row = (
3026
- <Row style={field.rowStyle ? field.rowStyle : {}} className={field.rowClassName ? field.rowClassName : ''}>
3027
- {
3028
- _.forEach(columns, (value) => {
3029
- if (value) {
3030
- return value;
3031
- }
3032
- return value;
3033
- })
3034
- }
3035
- </Row>
3036
- );
3037
- fields.push(row);
3038
- });
3039
-
3040
- _.forEach(section.actionFields, (field) => {
3041
- const columns = [];
3042
- _.forEach(field.cols, (val) => {
3043
- const type = val.type;
3044
- const styling = val.styling;
3045
- switch (type) {
3046
- case "button":
3047
- if (styling === 'semantic' && val.metaType === 'submit-button') {
3048
- columns.push(
3049
- <Col span={3}>
3050
- <CapButton
3051
- type={val.buttonType}
3052
- icon={val.icon}
3053
- disabled={val.disabled ? val.disabled : false}
3054
- onClick={(data) => val.id === 'save-button' ? this.saveForm() : this.callChildEvent(data, val, val.submitAction)}>
3055
- {val.value}
3056
- </CapButton>
3057
- </Col>
3058
- );
3059
- }
3060
- break;
3061
- default:
3062
- break;
3063
- }
3064
- });
3065
- const row = (
3066
- <Row>
3067
- {
3068
- _.forEach(columns, (value) => {
3069
- if (value) {
3070
- return value;
3071
- }
3072
- return value;
3073
- })
3074
- }
3075
- </Row>
3076
- );
3077
- fields.push(row);
3078
- });
3079
- return fields;
3080
- }
3081
-
3082
- renderContainer(container) {
3083
- const containerType = container.type;
3084
- const renderedPanes = [];
3085
- let renderedSections = [];
3086
- let renderedContentSections = [];
3087
- let paneIndex = 1;
3088
- let panes = [];
3089
- let result = [];
3090
- let extraActionSections = [];
3091
- let activeTabKey;
3092
- let paneTabKey;
3093
- let stateTabKey = '';
3094
- switch (containerType) {
3095
- case "tabs":
3096
- panes = container.panes;
3097
- _.forEach(panes, (pane, index) => {
3098
- renderedSections = pane.sections.map((section) => {
3099
- result = this.renderSection(section, paneIndex);
3100
- return result;
3101
- });
3102
- console.log('tabs rendering', renderedSections);
3103
- const sectionHeadeers = pane.sectionsHeaders ? pane.sectionsHeaders : container.tabContent && container.tabContent.sections;
3104
- renderedContentSections = sectionHeadeers.map( (tabContentSection) => {
3105
- result = this.renderSection(tabContentSection, paneIndex);
3106
- return result;
3107
- });
3108
- // let newTabKey = `${_.uniqueId()}`;
3109
- if (!this.state.formData[this.state.currentTab - 1]) {
3110
- return;
3111
- }
3112
- activeTabKey = this.state.formData.tabKey;
3113
- if (this.props.isNewVersionFlow) {
3114
- activeTabKey = this.state.tabKey;
3115
- }
3116
- paneTabKey = this.state.formData[paneIndex - 1] && this.state.formData[paneIndex - 1].tabKey;
3117
- if (this.props.isNewVersionFlow) {
3118
- const currentLang = this.state.formData[this.state.currentTab - 1].selectedLanguages[index];
3119
- paneTabKey = this.state.formData[this.state.currentTab - 1] && this.state.formData[this.state.currentTab - 1][currentLang] && this.state.formData[this.state.currentTab - 1][currentLang].tabKey;
3120
- }
3121
- console.log('tabs rendering pushing pane', paneTabKey, renderedSections, index, pane);
3122
- renderedPanes.push(
3123
- <TabPane
3124
- forceRender
3125
- tab={
3126
- <div className="form-tab-header" onInput={(e) => e.stopPropagation()}>
3127
- {
3128
- _.forEach(renderedContentSections, (value) => {
3129
- if (value) {
3130
- return value;
3131
- }
3132
- return value;
3133
- })
3134
- }
3135
- </div>
3136
- }
3137
- key={paneTabKey && paneTabKey !== '' ? `${paneTabKey}` : index}>
3138
- {
3139
- _.forEach(renderedSections, (value) => {
3140
- if (value) {
3141
- return value;
3142
- }
3143
- return value;
3144
- })
3145
- }
3146
- </TabPane>);
3147
- paneIndex += 1;
3148
- });
3149
- extraActionSections = container.tabBarExtraContent && container.tabBarExtraContent.sections ? container.tabBarExtraContent.sections.map((section) => {
3150
- result = this.renderSection(section);
3151
- return result;
3152
- }) : {};
3153
- stateTabKey = this.state.tabKey;
3154
- if (stateTabKey && stateTabKey !== '') {
3155
- activeTabKey = stateTabKey;
3156
- }
3157
- return (
3158
- <Tabs
3159
- activeKey={activeTabKey && activeTabKey !== '' ? `${activeTabKey}` : '1'}
3160
- defaultActiveKey={activeTabKey && activeTabKey !== '' ? `${activeTabKey}` : '1'}
3161
- onChange={(data, e) => { this.callChildEvent(data, container, 'onTabChange', e); }}
3162
- onEdit={(data, e) => this.onEdit(data, e)}
3163
- style={{width: '100%'}}
3164
- tabBarExtraContent={
3165
- !_.isEmpty(extraActionSections) && _.forEach(extraActionSections, (value) => {
3166
- if (value) {
3167
- return value;
3168
- }
3169
- return value;
3170
- })
3171
- }>
3172
- {
3173
- _.forEach(renderedPanes, (value) => {
3174
- if (value) {
3175
- return value;
3176
- }
3177
- return value;
3178
- })
3179
- }
3180
- </Tabs>
3181
- );
3182
-
3183
- default:
3184
- break;
3185
- }
3186
- return null;
3187
- }
3188
-
3189
- renderForm() {
3190
- const schema = this.props.schema;
3191
- const allElements = [];
3192
- let renderedStandAloneSections;
3193
- let renderedContainers;
3194
- if (schema.standalone) {
3195
- const sections = schema.standalone.sections;
3196
- renderedStandAloneSections = sections.map((section) => {
3197
- const result = this.renderSection(section);
3198
- return result;
3199
- });
3200
- allElements.push(renderedStandAloneSections);
3201
- }
3202
- if (schema.containers) {
3203
- renderedContainers = schema.containers.map((container) => {
3204
- if (container.isActive === undefined || (container.isActive)) {
3205
- const result = this.renderContainer(container);
3206
- return result;
3207
- }
3208
- return null;
3209
- });
3210
- console.log('tabs rendering result', renderedContainers);
3211
- allElements.push(renderedContainers);
3212
- console.log('tabs rendering all elements', allElements);
3213
- const modal = this.getModal();
3214
- allElements.push(modal);
3215
- }
3216
- return allElements;
3217
- }
3218
-
3219
- render() {
3220
- const cmsTemplateSelectionContent = (
3221
- <CardGrid
3222
- className={""}
3223
- listItem={this.populateTemplatesList(this.props.cmsTemplates)}
3224
- // filterContent={filterContent}
3225
- onHoverItem={this.handleOnHoverItem}
3226
- onItemClick={this.props.handleEdmDefaultTemplateSelection}
3227
- colNumber={2}
3228
- >
3229
- </CardGrid>
3230
- );
3231
-
3232
- console.log('form builder state ', this.state, this.props);
3233
- return (
3234
- <Row>
3235
- {
3236
- this.props.schema ? this.renderForm() : ''
3237
- }
3238
- <SlideBox
3239
- header={(<h3>Layout Selection</h3>)}
3240
- width={60}
3241
- content={cmsTemplateSelectionContent}
3242
- show={this.props.showEdmEmailTemplates}
3243
- handleClose={this.props.toggleEdmEmailTemplateSelection}
3244
- loadingText={"Loading EDM Templates"}
3245
- isLoading={this.props.getCmsTemplatesInProgress}
3246
- />
3247
- </Row>
3248
- );
3249
- }
3250
- }
3251
-
3252
- FormBuilder.defaultProps = {
3253
- isNewVersionFlow: false,
3254
- userLocale: 'en',
3255
- };
3256
-
3257
- FormBuilder.propTypes = {
3258
- schema: PropTypes.object.isRequired,
3259
- onSubmit: PropTypes.func,
3260
- formData: PropTypes.object,
3261
- onChange: PropTypes.func,
3262
- isEdit: PropTypes.bool,
3263
- usingTabContainer: PropTypes.bool,
3264
- parent: PropTypes.object,
3265
- iframeParent: PropTypes.object,
3266
- location: PropTypes.object,
3267
- tags: PropTypes.array,
3268
- injectedTags: PropTypes.object,
3269
- onFormValidityChange: PropTypes.func,
3270
- checkValidation: PropTypes.bool,
3271
- onContextChange: PropTypes.func,
3272
- tabCount: PropTypes.number,
3273
- isSchemaChanged: PropTypes.bool,
3274
- modal: PropTypes.object,
3275
- isNewVersionFlow: PropTypes.bool,
3276
- baseLanguage: PropTypes.string,
3277
- supportedLanguages: PropTypes.array,
3278
- router: PropTypes.object,
3279
- currentTab: PropTypes.number,
3280
- showModal: PropTypes.bool,
3281
- handleCancelModal: PropTypes.func,
3282
- cmsTemplates: PropTypes.array,
3283
- getCmsTemplatesInProgress: PropTypes.bool,
3284
- showEdmEmailTemplates: PropTypes.bool,
3285
- toggleEdmEmailTemplateSelection: PropTypes.func,
3286
- handleEdmDefaultTemplateSelection: PropTypes.func,
3287
- userLocale: PropTypes.string,
3288
- setModalContent: PropTypes.func,
3289
- addLanguageType: PropTypes.string,
3290
- getValidationData: PropTypes.func,
3291
- startValidation: PropTypes.bool,
3292
- // saveForm: PropTypes.bool,
3293
- stopValidation: PropTypes.func,
3294
- };
3295
-
3296
- export default FormBuilder;