@capillarytech/creatives-library 0.0.1

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