@legalplace/wizardx-core 2.6.4 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/App.js +13 -4
  3. package/dist/PluginLoader.d.ts +3 -1
  4. package/dist/PluginLoader.js +12 -0
  5. package/dist/ThemeLoader.d.ts +2 -2
  6. package/dist/componentsConnectors/connectBox.d.ts +3 -1
  7. package/dist/componentsConnectors/connectDocument.d.ts +3 -1
  8. package/dist/componentsConnectors/connectHeader.d.ts +3 -1
  9. package/dist/componentsConnectors/connectMetaTitle.d.ts +3 -1
  10. package/dist/componentsConnectors/connectOption.d.ts +6 -2
  11. package/dist/componentsConnectors/connectOption.js +1 -1
  12. package/dist/componentsConnectors/connectPagination.d.ts +3 -1
  13. package/dist/componentsConnectors/connectPreview.d.ts +3 -1
  14. package/dist/componentsConnectors/connectProgress.d.ts +3 -1
  15. package/dist/componentsConnectors/connectRootOption.d.ts +3 -1
  16. package/dist/componentsConnectors/connectSection.d.ts +3 -1
  17. package/dist/componentsConnectors/connectSection.js +7 -10
  18. package/dist/componentsConnectors/connectSummary.d.ts +3 -1
  19. package/dist/componentsConnectors/connectSummaryItem.d.ts +3 -1
  20. package/dist/componentsConnectors/connectVariable.d.ts +6 -2
  21. package/dist/componentsConnectors/connectVariable.js +1 -1
  22. package/dist/componentsConnectors/connectWizardWrapper.d.ts +3 -1
  23. package/dist/componentsConnectors/connector/componentConnector.d.ts +5 -1
  24. package/dist/componentsConnectors/connector/componentConnector.js +44 -4
  25. package/dist/componentsConnectors/connector/index.d.ts +1 -0
  26. package/dist/componentsConnectors/connector/index.js +1 -0
  27. package/dist/componentsConnectors/index.d.ts +17 -0
  28. package/dist/componentsConnectors/index.js +17 -0
  29. package/dist/componentsConnectors/library.d.ts +43 -15
  30. package/dist/helpers/apiEndpoint.d.ts +1 -0
  31. package/dist/helpers/apiEndpoint.js +4 -0
  32. package/dist/helpers/index.d.ts +4 -0
  33. package/dist/helpers/index.js +4 -0
  34. package/dist/helpers/propsEqualityCheck.d.ts +1 -0
  35. package/dist/helpers/propsEqualityCheck.js +9 -0
  36. package/dist/hooks/index.d.ts +4 -0
  37. package/dist/hooks/index.js +4 -0
  38. package/dist/hooks/useActions.d.ts +2 -0
  39. package/dist/hooks/useActions.js +4 -0
  40. package/dist/hooks/useDispatch.d.ts +1 -0
  41. package/dist/hooks/useDispatch.js +4 -0
  42. package/dist/hooks/useSelectors.d.ts +2 -0
  43. package/dist/hooks/useSelectors.js +4 -0
  44. package/dist/index.d.ts +13 -0
  45. package/dist/index.js +13 -0
  46. package/dist/libs/PathReader.d.ts +10 -6
  47. package/dist/libs/PathReader.js +47 -28
  48. package/dist/libs/index.d.ts +5 -0
  49. package/dist/libs/index.js +5 -0
  50. package/dist/redux/actions/index.d.ts +9 -0
  51. package/dist/redux/actions/index.js +9 -0
  52. package/dist/redux/actions/library.d.ts +59 -63
  53. package/dist/redux/actions/sagas/index.d.ts +3 -0
  54. package/dist/redux/actions/sagas/index.js +3 -0
  55. package/dist/redux/actions/sagas/model.d.ts +1 -5
  56. package/dist/redux/constants/app.d.ts +2 -0
  57. package/dist/redux/constants/app.js +2 -0
  58. package/dist/redux/constants/index.d.ts +8 -0
  59. package/dist/redux/constants/index.js +8 -0
  60. package/dist/redux/constants/sagas/index.d.ts +3 -0
  61. package/dist/redux/constants/sagas/index.js +3 -0
  62. package/dist/redux/index.d.ts +5 -0
  63. package/dist/redux/index.js +5 -0
  64. package/dist/redux/middlewares/conditionsWatcherMiddleware.js +11 -5
  65. package/dist/redux/middlewares/conditionsWatcherMiddleware.test.js +120 -113
  66. package/dist/redux/middlewares/paginationWatcherMiddleware.js +2 -2
  67. package/dist/redux/middlewares/smartscriptMiddleware.js +8 -0
  68. package/dist/redux/reducers/pluginsStore.d.ts +3 -0
  69. package/dist/redux/reducers/pluginsStore.js +12 -0
  70. package/dist/redux/routerHistory.js +2 -2
  71. package/dist/redux/sagas/fetchModel.js +22 -6
  72. package/dist/redux/sagas/initInputs.js +6 -7
  73. package/dist/redux/sagas/saveData.js +2 -0
  74. package/dist/redux/selectors/app.js +13 -18
  75. package/dist/redux/selectors/cache.d.ts +17 -0
  76. package/dist/redux/selectors/cache.js +35 -0
  77. package/dist/redux/selectors/conditions.js +7 -7
  78. package/dist/redux/selectors/index.d.ts +8 -0
  79. package/dist/redux/selectors/index.js +8 -0
  80. package/dist/redux/selectors/inputs.js +3 -3
  81. package/dist/redux/selectors/library.d.ts +2 -2
  82. package/dist/redux/selectors/references.js +26 -26
  83. package/dist/redux/selectors/selectors.d.ts +2 -2
  84. package/dist/redux/selectors/selectors.js +19 -8
  85. package/dist/redux/selectors/selectors.test.js +6 -6
  86. package/dist/redux/selectors/user.js +5 -5
  87. package/dist/redux/store.d.ts +1 -1
  88. package/dist/redux/store.js +12 -4
  89. package/dist/service/api.manager.d.ts +1 -6
  90. package/dist/service/index.d.ts +3 -0
  91. package/dist/service/index.js +3 -0
  92. package/dist/types/PluginConfig.type.d.ts +57 -0
  93. package/dist/types/PluginConfig.type.js +1 -0
  94. package/dist/types/State.type.d.ts +6 -0
  95. package/dist/types/config.type.d.ts +3 -1
  96. package/dist/types/index.d.ts +11 -0
  97. package/dist/types/index.js +11 -0
  98. package/package.json +11 -11
  99. package/.depcheckrc +0 -1
  100. package/.eslintignore +0 -2
  101. package/.eslintrc +0 -5
  102. package/__mocks__/fileMock.js +0 -1
  103. package/babel.config.json +0 -3
  104. package/jest.config.ts +0 -193
  105. package/setupJest.ts +0 -8
  106. package/src/App.test.tsx +0 -41
  107. package/src/App.tsx +0 -152
  108. package/src/Globals.ts +0 -69
  109. package/src/Loader.tsx +0 -8
  110. package/src/PluginLoader.test.tsx +0 -70
  111. package/src/PluginLoader.tsx +0 -407
  112. package/src/Shimmer.tsx +0 -108
  113. package/src/ThemeLoader.test.tsx +0 -82
  114. package/src/ThemeLoader.tsx +0 -95
  115. package/src/components/PluginRoute.tsx +0 -48
  116. package/src/components/SmartScript.tsx +0 -166
  117. package/src/components/UserLocked/UserLockedComponent.tsx +0 -33
  118. package/src/components/View.test.tsx +0 -110
  119. package/src/components/View.tsx +0 -114
  120. package/src/componentsConnectors/connectBox.test.tsx +0 -226
  121. package/src/componentsConnectors/connectBox.tsx +0 -70
  122. package/src/componentsConnectors/connectDocument.test.tsx +0 -108
  123. package/src/componentsConnectors/connectDocument.tsx +0 -64
  124. package/src/componentsConnectors/connectHeader.tsx +0 -21
  125. package/src/componentsConnectors/connectMetaTitle.test.tsx +0 -40
  126. package/src/componentsConnectors/connectMetaTitle.tsx +0 -8
  127. package/src/componentsConnectors/connectOption.tsx +0 -222
  128. package/src/componentsConnectors/connectPagination.tsx +0 -102
  129. package/src/componentsConnectors/connectPreview.tsx +0 -5
  130. package/src/componentsConnectors/connectProgress.tsx +0 -59
  131. package/src/componentsConnectors/connectRootOption.tsx +0 -95
  132. package/src/componentsConnectors/connectSection.tsx +0 -79
  133. package/src/componentsConnectors/connectSummary.tsx +0 -21
  134. package/src/componentsConnectors/connectSummaryItem.tsx +0 -102
  135. package/src/componentsConnectors/connectTermsheet.tsx +0 -359
  136. package/src/componentsConnectors/connectVariable.tsx +0 -191
  137. package/src/componentsConnectors/connectWizardWrapper.tsx +0 -30
  138. package/src/componentsConnectors/connector/componentConnector.tsx +0 -219
  139. package/src/componentsConnectors/library.ts +0 -35
  140. package/src/config.test.ts +0 -63
  141. package/src/config.ts +0 -11
  142. package/src/constants/emailValidation.ts +0 -2
  143. package/src/constants/phoneValidation.ts +0 -4
  144. package/src/definitions/path.join.d.ts +0 -4
  145. package/src/helpers/outputsParsing.ts +0 -412
  146. package/src/helpers/preloadTheme.ts +0 -17
  147. package/src/helpers/scriptsLoader.ts +0 -20
  148. package/src/hooks/usePrevious.ts +0 -9
  149. package/src/libs/ConditionsInitiator.ts +0 -164
  150. package/src/libs/ConditionsRunner/DataPopulator.ts +0 -266
  151. package/src/libs/ConditionsRunner.ts +0 -454
  152. package/src/libs/DocumentsOutputs.ts +0 -171
  153. package/src/libs/Eval/EvalBase.ts +0 -116
  154. package/src/libs/Eval/EvalFunctions.ts +0 -724
  155. package/src/libs/Eval/NumbersToLetters.ts +0 -185
  156. package/src/libs/EvalVariable.ts +0 -265
  157. package/src/libs/EventsTracking.ts +0 -250
  158. package/src/libs/InputsInitiator.ts +0 -136
  159. package/src/libs/NumAuto.test.ts +0 -55
  160. package/src/libs/NumAuto.ts +0 -56
  161. package/src/libs/OvcConverter.ts +0 -285
  162. package/src/libs/PathReader.ts +0 -272
  163. package/src/libs/SectionValidity.test.ts +0 -146
  164. package/src/libs/SectionValidity.ts +0 -110
  165. package/src/libs/SmartScriptStore.ts +0 -492
  166. package/src/misc/test_model.ts +0 -14603
  167. package/src/misc/test_models/connectDocumen.testmodel.json +0 -178
  168. package/src/misc/test_models/setDefaults.testmodel.json +0 -279
  169. package/src/misc/test_models/testmodel.json +0 -1
  170. package/src/polyfills/index.ts +0 -5
  171. package/src/polyfills/objectValues.ts +0 -4
  172. package/src/polyfills/prepend.ts +0 -31
  173. package/src/polyfills/stringRepeat.ts +0 -44
  174. package/src/redux/actions/app.test.ts +0 -123
  175. package/src/redux/actions/app.ts +0 -249
  176. package/src/redux/actions/conditions.test.ts +0 -84
  177. package/src/redux/actions/conditions.ts +0 -135
  178. package/src/redux/actions/inputs.test.ts +0 -85
  179. package/src/redux/actions/inputs.ts +0 -111
  180. package/src/redux/actions/library.ts +0 -23
  181. package/src/redux/actions/mandatories.ts +0 -98
  182. package/src/redux/actions/references.test.ts +0 -48
  183. package/src/redux/actions/references.ts +0 -37
  184. package/src/redux/actions/sagas/data.test.ts +0 -11
  185. package/src/redux/actions/sagas/data.ts +0 -18
  186. package/src/redux/actions/sagas/model.test.ts +0 -14
  187. package/src/redux/actions/sagas/model.ts +0 -48
  188. package/src/redux/actions/sagas/user.ts +0 -25
  189. package/src/redux/actions/smartscript.ts +0 -55
  190. package/src/redux/actions/user.test.ts +0 -18
  191. package/src/redux/actions/user.ts +0 -41
  192. package/src/redux/constants/app.ts +0 -36
  193. package/src/redux/constants/conditions.ts +0 -25
  194. package/src/redux/constants/inputs.ts +0 -15
  195. package/src/redux/constants/mandatories.ts +0 -11
  196. package/src/redux/constants/references.ts +0 -7
  197. package/src/redux/constants/sagas/data.ts +0 -1
  198. package/src/redux/constants/sagas/model.ts +0 -2
  199. package/src/redux/constants/sagas/user.ts +0 -2
  200. package/src/redux/constants/smartscript.ts +0 -9
  201. package/src/redux/constants/user.ts +0 -6
  202. package/src/redux/listeners/subscriber.test.ts +0 -45
  203. package/src/redux/listeners/subscriber.ts +0 -29
  204. package/src/redux/middlewares/conditionsWatcherMiddleware.test.ts +0 -370
  205. package/src/redux/middlewares/conditionsWatcherMiddleware.ts +0 -321
  206. package/src/redux/middlewares/evaluationsWatcherMiddleware.test.ts +0 -323
  207. package/src/redux/middlewares/evaluationsWatcherMiddleware.ts +0 -250
  208. package/src/redux/middlewares/mandatoriesWatcherMiddleware.ts +0 -473
  209. package/src/redux/middlewares/multiplesActionsMiddleware.test.ts +0 -230
  210. package/src/redux/middlewares/multiplesActionsMiddleware.ts +0 -121
  211. package/src/redux/middlewares/paginationWatcherMiddleware.ts +0 -251
  212. package/src/redux/middlewares/pluginsHookMiddleware.ts +0 -24
  213. package/src/redux/middlewares/prefillerWatcherMiddleware.test.ts +0 -118
  214. package/src/redux/middlewares/prefillerWatcherMiddleware.ts +0 -462
  215. package/src/redux/middlewares/smartscriptMiddleware.ts +0 -228
  216. package/src/redux/middlewares/thirdpartyScriptsMiddleware.ts +0 -41
  217. package/src/redux/reducers/app/customizations/initCustomizationAutoDefault.ts +0 -16
  218. package/src/redux/reducers/app/customizations/initCustomizationMeta.ts +0 -16
  219. package/src/redux/reducers/app/instance/initInstance.ts +0 -29
  220. package/src/redux/reducers/app/instance/setDataStatus.ts +0 -16
  221. package/src/redux/reducers/app/instance/updateInstance.ts +0 -30
  222. package/src/redux/reducers/app/instance/updateInstancePaid.ts +0 -20
  223. package/src/redux/reducers/app/instance.test.ts +0 -106
  224. package/src/redux/reducers/app/meta/fetchModelFailed.ts +0 -11
  225. package/src/redux/reducers/app/meta/fetchModelNonBlocking.ts +0 -11
  226. package/src/redux/reducers/app/meta/fetchModelSucceeded.ts +0 -11
  227. package/src/redux/reducers/app/meta/fetchModelUnhealthy.ts +0 -18
  228. package/src/redux/reducers/app/meta/fetchModelUserLocked.ts +0 -11
  229. package/src/redux/reducers/app/meta/initMeta.ts +0 -22
  230. package/src/redux/reducers/app/meta/setModelUuid.ts +0 -17
  231. package/src/redux/reducers/app/meta.test.ts +0 -90
  232. package/src/redux/reducers/app/pagination/goNextPage.ts +0 -69
  233. package/src/redux/reducers/app/pagination/goPage.ts +0 -81
  234. package/src/redux/reducers/app/pagination/goPreviousPage.ts +0 -60
  235. package/src/redux/reducers/app/pagination/initPagination.ts +0 -46
  236. package/src/redux/reducers/app/pagination/updateAvailableAppStates.ts +0 -77
  237. package/src/redux/reducers/app/pagination.test.ts +0 -363
  238. package/src/redux/reducers/app/wizard/updateAvailableSections.ts +0 -40
  239. package/src/redux/reducers/app/wizard.test.ts +0 -84
  240. package/src/redux/reducers/app.test.ts +0 -336
  241. package/src/redux/reducers/app.ts +0 -150
  242. package/src/redux/reducers/conditions/addMultipleOccurency.test.ts +0 -131
  243. package/src/redux/reducers/conditions/addMultipleOccurency.ts +0 -155
  244. package/src/redux/reducers/conditions/deleteMultipleOccurency.test.ts +0 -95
  245. package/src/redux/reducers/conditions/deleteMultipleOccurency.ts +0 -141
  246. package/src/redux/reducers/conditions/initConditions.ts +0 -18
  247. package/src/redux/reducers/conditions/updateDocumentConditions.test.ts +0 -47
  248. package/src/redux/reducers/conditions/updateDocumentConditions.ts +0 -21
  249. package/src/redux/reducers/conditions/updateOptionConditions.ts +0 -24
  250. package/src/redux/reducers/conditions/updateOptionValidatorCondition.test.ts +0 -50
  251. package/src/redux/reducers/conditions/updateOptionValidatorCondition.ts +0 -28
  252. package/src/redux/reducers/conditions/updatePrefillerConditions.ts +0 -29
  253. package/src/redux/reducers/conditions/updateSectionConditions.ts +0 -28
  254. package/src/redux/reducers/conditions/updateVariableConditions.ts +0 -25
  255. package/src/redux/reducers/conditions/updateVariableValidatorCondition.test.ts +0 -50
  256. package/src/redux/reducers/conditions/updateVariableValidatorCondition.ts +0 -28
  257. package/src/redux/reducers/conditions.test.ts +0 -241
  258. package/src/redux/reducers/conditions.ts +0 -68
  259. package/src/redux/reducers/inputs/addMultipleOccurency.test.ts +0 -117
  260. package/src/redux/reducers/inputs/addMultipleOccurency.ts +0 -50
  261. package/src/redux/reducers/inputs/deleteMultipleOccurency.test.ts +0 -70
  262. package/src/redux/reducers/inputs/deleteMultipleOccurency.ts +0 -50
  263. package/src/redux/reducers/inputs/initOption.ts +0 -16
  264. package/src/redux/reducers/inputs/initVariable.ts +0 -16
  265. package/src/redux/reducers/inputs/updateOptionInput.ts +0 -24
  266. package/src/redux/reducers/inputs/updateVariableInput.ts +0 -24
  267. package/src/redux/reducers/inputs.test.ts +0 -221
  268. package/src/redux/reducers/inputs.ts +0 -51
  269. package/src/redux/reducers/mandatories/addMultipleOccurency.ts +0 -52
  270. package/src/redux/reducers/mandatories/deleteMultipleOccurency.ts +0 -55
  271. package/src/redux/reducers/mandatories/initMandatoryOption.ts +0 -17
  272. package/src/redux/reducers/mandatories/initMandatoryVariable.ts +0 -17
  273. package/src/redux/reducers/mandatories/setMandatoryIgnore.ts +0 -17
  274. package/src/redux/reducers/mandatories/setMandatoryOption.ts +0 -25
  275. package/src/redux/reducers/mandatories/setMandatorySection.ts +0 -20
  276. package/src/redux/reducers/mandatories/setMandatoryVariable.ts +0 -24
  277. package/src/redux/reducers/mandatories.ts +0 -56
  278. package/src/redux/reducers/references/initReferences.ts +0 -37
  279. package/src/redux/reducers/references/updateOptionMeta.ts +0 -73
  280. package/src/redux/reducers/references/updateVariableMeta.ts +0 -72
  281. package/src/redux/reducers/references.ts +0 -59
  282. package/src/redux/reducers/smartscript/enableSmartScript.ts +0 -13
  283. package/src/redux/reducers/smartscript/initSmartScriptTriggers.ts +0 -14
  284. package/src/redux/reducers/smartscript/updateSmartscriptOptionHidden.ts +0 -30
  285. package/src/redux/reducers/smartscript/updateSmartscriptVariableHidden.ts +0 -30
  286. package/src/redux/reducers/smartscript.ts +0 -47
  287. package/src/redux/reducers/user/initUser.ts +0 -15
  288. package/src/redux/reducers/user/setUserStatus.ts +0 -13
  289. package/src/redux/reducers/user/setUserValidToken.ts +0 -13
  290. package/src/redux/reducers/user.test.ts +0 -51
  291. package/src/redux/reducers/user.ts +0 -40
  292. package/src/redux/routerHistore.test.ts +0 -19
  293. package/src/redux/routerHistory.ts +0 -26
  294. package/src/redux/sagas/fetchModel.test.ts +0 -76
  295. package/src/redux/sagas/fetchModel.ts +0 -683
  296. package/src/redux/sagas/homogeneousRadioInputsSaga.ts +0 -42
  297. package/src/redux/sagas/initInputs.ts +0 -110
  298. package/src/redux/sagas/runner.test.ts +0 -12
  299. package/src/redux/sagas/runner.ts +0 -26
  300. package/src/redux/sagas/saveData.test.ts +0 -125
  301. package/src/redux/sagas/saveData.ts +0 -55
  302. package/src/redux/sagas/setDefaults.test.ts +0 -100
  303. package/src/redux/sagas/setDefaults.ts +0 -167
  304. package/src/redux/sagas/setUserEmail.ts +0 -175
  305. package/src/redux/selectors/app.test.ts +0 -162
  306. package/src/redux/selectors/app.ts +0 -331
  307. package/src/redux/selectors/conditions.test.ts +0 -92
  308. package/src/redux/selectors/conditions.ts +0 -293
  309. package/src/redux/selectors/inputs.test.ts +0 -72
  310. package/src/redux/selectors/inputs.ts +0 -76
  311. package/src/redux/selectors/library.ts +0 -17
  312. package/src/redux/selectors/mandatories.ts +0 -83
  313. package/src/redux/selectors/references.test.ts +0 -660
  314. package/src/redux/selectors/references.ts +0 -413
  315. package/src/redux/selectors/selectors.test.ts +0 -21
  316. package/src/redux/selectors/selectors.ts +0 -87
  317. package/src/redux/selectors/smartscript.ts +0 -30
  318. package/src/redux/selectors/user.test.ts +0 -39
  319. package/src/redux/selectors/user.ts +0 -45
  320. package/src/redux/store.test.ts +0 -22
  321. package/src/redux/store.ts +0 -100
  322. package/src/service/api.manager.ts +0 -261
  323. package/src/service/auth.service.ts +0 -5
  324. package/src/service/pardot.service.ts +0 -10
  325. package/src/tests-misc/plugins/jestTestPlugin/after.tsx +0 -5
  326. package/src/tests-misc/plugins/jestTestPlugin/before.tsx +0 -11
  327. package/src/tests-misc/plugins/jestTestPlugin/index.ts +0 -11
  328. package/src/tests-misc/plugins/jestTestPlugin/title.tsx +0 -8
  329. package/src/tests-misc/themes/jestTestTheme/components/EmailComponent.tsx +0 -5
  330. package/src/tests-misc/themes/jestTestTheme/components/TermsheetComponent.tsx +0 -5
  331. package/src/tests-misc/themes/jestTestTheme/components/WizardComponent.tsx +0 -5
  332. package/src/tests-misc/themes/jestTestTheme/faltyIndex.ts +0 -3
  333. package/src/tests-misc/themes/jestTestTheme/faltyIndexLoader.ts +0 -1
  334. package/src/tests-misc/themes/jestTestTheme/index.ts +0 -13
  335. package/src/types/Actions.type.ts +0 -612
  336. package/src/types/Components.type.ts +0 -181
  337. package/src/types/State.type.ts +0 -323
  338. package/src/types/Termsheet.type.ts +0 -28
  339. package/src/types/api.type.ts +0 -37
  340. package/src/types/config.type.ts +0 -55
  341. package/src/types/env.type.ts +0 -5
  342. package/src/types/getActions.type.ts +0 -3
  343. package/src/types/getConnectors.type.ts +0 -5
  344. package/src/types/getSelectors.type.ts +0 -3
  345. package/src/wizard-params.ts +0 -56
  346. package/tsconfig.json +0 -43
@@ -1,42 +0,0 @@
1
- import { put, takeLatest } from "redux-saga/effects";
2
- import { UPDATE_OPTION_INPUT } from "../constants/inputs";
3
- import { ActionsType } from "../../types/Actions.type";
4
- import { selectRadioSiblings } from "../selectors/references";
5
- import { updateOptionAction } from "../actions/inputs";
6
- import { selectOptionInputByIndex } from "../selectors/inputs";
7
-
8
- /**
9
- * This Saga helps make sure radio inputs are homogenous,
10
- * when a radio is set to true, this saga makes sure all
11
- * its siblings are false
12
- * @param action UPDATE_OPTION_INPUT Action
13
- */
14
- function* homogeneousRadioInputsDecorator(
15
- action: ActionsType.Inputs.updateOptionInput
16
- ) {
17
- // Getting option siblings
18
- const { id, index, value } = action;
19
-
20
- if (value === true) {
21
- /**
22
- * In case the option we are asked to update
23
- * is a radio, and we need to set it to true
24
- * we need to make sure all its siblings are
25
- * set to false
26
- */
27
- const radioSiblings = selectRadioSiblings(id);
28
- if (radioSiblings && value === true) {
29
- for (let i = 0; i < radioSiblings.length; i += 1) {
30
- const siblingId = radioSiblings[i];
31
- if (selectOptionInputByIndex(siblingId, index) === true)
32
- yield put(updateOptionAction(siblingId, false, index));
33
- }
34
- }
35
- }
36
- }
37
-
38
- function* homogeneousRadioInputsSaga() {
39
- yield takeLatest(UPDATE_OPTION_INPUT, homogeneousRadioInputsDecorator);
40
- }
41
-
42
- export default homogeneousRadioInputsSaga;
@@ -1,110 +0,0 @@
1
- import { select, takeLatest, put } from "redux-saga/effects";
2
- import { StateType } from "../../types/State.type";
3
- import { ActionsType } from "../../types/Actions.type";
4
- import { INIT_INPUTS } from "../constants/inputs";
5
- import {
6
- selectMandatoryOptionItem,
7
- selectMandatoryOption,
8
- } from "../selectors/mandatories";
9
- import {
10
- initMandatoryOptionAction,
11
- initMandatoryVariableAction,
12
- } from "../actions/mandatories";
13
- import { initOptionAction, initVariableAction } from "../actions/inputs";
14
- import { initConditionsAction } from "../actions/conditions";
15
- import { ConditionsInitiator } from "../../libs/ConditionsInitiator";
16
- import { selectOptionRelations } from "../selectors/references";
17
-
18
- const getValues = (arr1: boolean[], arr2: boolean[]) =>
19
- arr1.map((v, index) => arr2[index] || v);
20
-
21
- export function* initInputsDecorator(action: ActionsType.Inputs.initInputs) {
22
- const state: StateType = yield select((s) => s);
23
- const references = action.references ? action.references : state.references;
24
- const { inputs } = action;
25
-
26
- // Initiating Conditions
27
- const conditions = new ConditionsInitiator(
28
- references,
29
- inputs
30
- ).getConditions();
31
-
32
- /**
33
- * Initiating conditions first before initiating inputs
34
- */
35
- yield put(initConditionsAction(conditions));
36
-
37
- /**
38
- * Initiating inputs
39
- */
40
-
41
- // Options
42
- const optionsIds = Object.keys(inputs.options);
43
- for (let i = 0; i < optionsIds.length; i += 1) {
44
- let optionId = parseInt(optionsIds[i], 10);
45
- let values = inputs.options[optionId];
46
- yield put(initOptionAction(optionId, values));
47
- // If option is mandatory we initiate it
48
- const { meta: meta2 } = references.options[optionId];
49
- const { type } = meta2;
50
- let { mandatory } = meta2;
51
- let sendOptionAction = true;
52
- if (["checkbox", "radio"].includes(type)) {
53
- if (type === "radio") {
54
- const { parents } = selectOptionRelations(optionId);
55
- // Get parentId
56
- const parentId = parents[0];
57
- // check if optin exist on mandatory
58
- const isMandatoryOption = selectMandatoryOptionItem(parentId);
59
- // If parentId value = true don't send an action
60
- if (typeof isMandatoryOption !== "undefined") {
61
- const mandatoryOption = selectMandatoryOption(parentId);
62
- sendOptionAction = !mandatoryOption.every((v) => v === true);
63
- // handle multiple
64
- if (sendOptionAction === true && mandatoryOption) {
65
- if (values.length >= mandatoryOption.length) {
66
- values = getValues(values, [...mandatoryOption]);
67
- } else {
68
- values = getValues([...mandatoryOption], values);
69
- }
70
- }
71
- }
72
-
73
- mandatory = references.options[parentId].meta.mandatory;
74
- optionId = parentId;
75
- }
76
-
77
- if (mandatory === true && sendOptionAction === true) {
78
- yield put(initMandatoryOptionAction(optionId, values));
79
- }
80
- }
81
- }
82
-
83
- // Variables
84
- const variablesIds = Object.keys(inputs.variables);
85
- for (let i = 0; i < variablesIds.length; i += 1) {
86
- const variableId = variablesIds[i];
87
- const values = inputs.variables[variableId];
88
- yield put(initVariableAction(parseInt(variableId, 10), values));
89
-
90
- // If variable is mandatory we initiate it
91
- if (references.variables[variableId].mandatory === true)
92
- yield put(
93
- initMandatoryVariableAction(
94
- parseInt(variableId, 10),
95
- values.map((value) => `${value}`.trim().length > 0)
96
- )
97
- );
98
- }
99
-
100
- /**
101
- * Initiating conditions a second time after initiating inputs
102
- */
103
- yield put(initConditionsAction(conditions));
104
- }
105
-
106
- function* initInputsSaga() {
107
- yield takeLatest(INIT_INPUTS, initInputsDecorator);
108
- }
109
-
110
- export default initInputsSaga;
@@ -1,12 +0,0 @@
1
- import { sagasRunner } from './runner';
2
-
3
- describe('Runner', () => {
4
- it('Runs sagas', () => {
5
- // @ts-ignore: Ignoring for mock
6
- const SagaMiddleware: SagaMiddleware = {
7
- run: jest.fn(),
8
- };
9
- sagasRunner(SagaMiddleware);
10
- expect(SagaMiddleware.run).toHaveBeenCalled();
11
- });
12
- });
@@ -1,26 +0,0 @@
1
- import { SagaMiddleware } from "@redux-saga/core";
2
- import fetchModelSaga from "./fetchModel";
3
- import setDefaultsSaga from "./setDefaults";
4
- import saveDataSaga from "./saveData";
5
- import homogeneousRadioInputsSaga from "./homogeneousRadioInputsSaga";
6
- import setUserEmailSaga from "./setUserEmail";
7
- import initInputsSaga from "./initInputs";
8
-
9
- const sagas: { (): any }[] = [
10
- fetchModelSaga,
11
- setDefaultsSaga,
12
- saveDataSaga,
13
- setUserEmailSaga,
14
- homogeneousRadioInputsSaga,
15
- initInputsSaga,
16
- ];
17
-
18
- /**
19
- *
20
- * @param sagaMiddleware Saga's middleware
21
- */
22
- export const sagasRunner = (
23
- sagaMiddleware: SagaMiddleware<Record<string, unknown>>
24
- ) => {
25
- sagas.forEach((saga) => sagaMiddleware.run(saga));
26
- };
@@ -1,125 +0,0 @@
1
- import * as fs from 'fs';
2
- import { ReferencesParser } from '@legalplace/referencesparser';
3
- import { createAppStore, getStore } from '../store';
4
- import {
5
- initMetaAction,
6
- initPaginationAction,
7
- initInstanceAction,
8
- } from '../actions/app';
9
- import { initReferencesAction } from '../actions/references';
10
- import { IntputsInitiator } from '../../libs/InputsInitiator';
11
- import {
12
- initOptionAction,
13
- initVariableAction,
14
- updateOptionAction,
15
- } from '../actions/inputs';
16
- import { initConditionsAction } from '../actions/conditions';
17
- import { ConditionsInitiator } from '../../libs/ConditionsInitiator';
18
- import { saveDataAction } from '../actions/sagas/data';
19
-
20
- // eslint-disable-next-line @typescript-eslint/no-var-requires
21
- require('jest-fetch-mock').enableMocks();
22
-
23
- const permalink = 'test-model';
24
- const uniqid = 'myMockUniqid';
25
- const mockApiEndpoint = 'https://api.mock/api/v1/';
26
-
27
- // Mocking config
28
- jest.mock('../../config', () => ({
29
- getConfig: () => ({
30
- apiEndpoint: mockApiEndpoint,
31
- }),
32
- }));
33
-
34
- describe('Save data saga', () => {
35
- let store: any;
36
- beforeEach(() => {
37
- createAppStore('memory');
38
- store = getStore();
39
- store.dispatch({
40
- type: 'SET_DEFAULTS',
41
- });
42
-
43
- // Initiating references
44
- const model = JSON.parse(
45
- fs.readFileSync(
46
- './src/misc/test_models/setDefaults.testmodel.json',
47
- 'utf8'
48
- )
49
- );
50
- const references = new ReferencesParser(model).getReferences();
51
- store.dispatch(initReferencesAction(references));
52
-
53
- // Inputs initiation
54
- const inputs = new IntputsInitiator(references, null).getInputs();
55
- Object.keys(inputs.options).forEach((optionId) => {
56
- const values = inputs.options[optionId];
57
- store.dispatch(initOptionAction(parseInt(optionId, 10), values));
58
- });
59
- Object.keys(inputs.variables).forEach((variableId) => {
60
- const values = inputs.variables[variableId];
61
- store.dispatch(initVariableAction(parseInt(variableId, 10), values));
62
- });
63
-
64
- // Initiating Meta
65
- store.dispatch(
66
- initMetaAction({
67
- id: 123,
68
- title: 'Test model',
69
- permalink,
70
- modelVersion: 1,
71
- prefix: '',
72
- productType: 'demarche',
73
- })
74
- );
75
-
76
- // Initiating Meta
77
- store.dispatch(
78
- initInstanceAction({
79
- uniqid,
80
- isPaid: false,
81
- dataStatus: 'unsaved',
82
- steps: '*',
83
- })
84
- );
85
-
86
- // Initiating Pagination
87
- store.dispatch(
88
- initPaginationAction({
89
- availableAppStates: ['wizard', 'termsheet'],
90
- currentAppState: 'wizard',
91
- currentPage: 4,
92
- greatestPage: 4,
93
- currentSectionId: 1,
94
- availableSections: [1, 3],
95
- })
96
- );
97
-
98
- // Initiating conditions
99
- const conditions = new ConditionsInitiator(
100
- references,
101
- inputs
102
- ).getConditions();
103
- store.dispatch(initConditionsAction(conditions));
104
-
105
- // Setting defaults
106
- store.dispatch({ type: 'SET_DEFAULTS' });
107
-
108
- // Making some more updates in the inputs
109
- store.dispatch(updateOptionAction(15, true, 0));
110
-
111
- // Resetting fetch mocks
112
- fetchMock.resetMocks();
113
- });
114
-
115
- it('Sends save request to API', () => {
116
- fetchMock.mockResponseOnce(JSON.stringify({ status: 'success' }));
117
-
118
- store.dispatch(saveDataAction());
119
-
120
- expect(fetchMock.mock.calls.length).toEqual(1);
121
- expect(fetchMock.mock.calls[0][0]).toEqual(
122
- `${mockApiEndpoint}wizard/instance/${permalink}/${uniqid}`
123
- );
124
- });
125
- });
@@ -1,55 +0,0 @@
1
- import { call, put, takeLatest } from "redux-saga/effects";
2
- import { setDataStatus } from "../actions/app";
3
- import { selectPermalink, selectInstanceUniqid } from "../selectors/app";
4
- import { SAVE_DATA } from "../constants/sagas/data";
5
- import { selectInputs } from "../selectors/inputs";
6
- import { OvcConverter } from "../../libs/OvcConverter";
7
- import { ActionsType } from "../../types/Actions.type";
8
- import { updateInstanceArguments } from "../../service/api.manager";
9
-
10
- function* saveDataDecorator(
11
- action: ActionsType.Sagas.Data.saveData
12
- ): Generator<any, any, any> {
13
- try {
14
- // eslint-disable-next-line no-console
15
- yield put(setDataStatus("saving"));
16
- const permalink = selectPermalink();
17
- const uniqid = selectInstanceUniqid();
18
- // @ts-ignore because of saga implementation
19
- const response = yield call(
20
- // @ts-ignore because of saga implementation
21
- fetch,
22
- ...updateInstanceArguments(
23
- permalink,
24
- uniqid,
25
- OvcConverter.convertToOvc(selectInputs()),
26
- action.confirmAnswer ? 0 : 1,
27
- action.additionalProperties
28
- )
29
- );
30
- // @ts-ignore because of saga implementation
31
- const responseData = yield call([response, "json"]);
32
- // Redirecting if we recieved order to
33
- if (action.redirect === true) {
34
- if (responseData.redirect_to) {
35
- window.onbeforeunload = () => {};
36
- window.location.href = responseData.redirect_to;
37
- } else if (action.redirectFallback) {
38
- window.onbeforeunload = () => {};
39
- window.location.href = action.redirectFallback;
40
- }
41
- }
42
-
43
- yield put(setDataStatus("saved"));
44
- } catch (e) {
45
- // eslint-disable-next-line no-console
46
- console.error(e);
47
- yield put(setDataStatus("failed"));
48
- }
49
- }
50
-
51
- function* saveDataSaga() {
52
- yield takeLatest(SAVE_DATA, saveDataDecorator);
53
- }
54
-
55
- export default saveDataSaga;
@@ -1,100 +0,0 @@
1
- import * as fs from 'fs';
2
- import { ReferencesParser } from '@legalplace/referencesparser';
3
- import { createAppStore, getStore } from '../store';
4
- import { initMetaAction, initPaginationAction } from '../actions/app';
5
- import { initReferencesAction } from '../actions/references';
6
- import { IntputsInitiator } from '../../libs/InputsInitiator';
7
- import { initOptionAction, initVariableAction } from '../actions/inputs';
8
- import { initConditionsAction } from '../actions/conditions';
9
- import { ConditionsInitiator } from '../../libs/ConditionsInitiator';
10
-
11
- describe('Set defaults saga', () => {
12
- let store: any;
13
- beforeEach(() => {
14
- createAppStore('memory');
15
- store = getStore();
16
- store.dispatch({
17
- type: 'SET_DEFAULTS',
18
- });
19
-
20
- // Initiating references
21
- const model = JSON.parse(
22
- fs.readFileSync(
23
- './src/misc/test_models/setDefaults.testmodel.json',
24
- 'utf8'
25
- )
26
- );
27
- const references = new ReferencesParser(model).getReferences();
28
- store.dispatch(initReferencesAction(references));
29
-
30
- // Inputs initiation
31
- const inputs = new IntputsInitiator(references, null).getInputs();
32
- Object.keys(inputs.options).forEach((optionId) => {
33
- const values = inputs.options[optionId];
34
- store.dispatch(initOptionAction(parseInt(optionId, 10), values));
35
- });
36
- Object.keys(inputs.variables).forEach((variableId) => {
37
- const values = inputs.variables[variableId];
38
- store.dispatch(initVariableAction(parseInt(variableId, 10), values));
39
- });
40
-
41
- // Initiating Meta
42
- store.dispatch(
43
- initMetaAction({
44
- id: 123,
45
- title: 'Test model',
46
- permalink: 'test-model',
47
- prefix: '',
48
- modelVersion: 1,
49
- productType: 'demarche',
50
- })
51
- );
52
-
53
- // Initiating Pagination
54
- store.dispatch(
55
- initPaginationAction({
56
- availableAppStates: ['wizard', 'termsheet'],
57
- currentAppState: 'wizard',
58
- currentPage: 4,
59
- greatestPage: 4,
60
- currentSectionId: 1,
61
- availableSections: [1, 3],
62
- })
63
- );
64
-
65
- // Initiating conditions
66
- const conditions = new ConditionsInitiator(
67
- references,
68
- inputs
69
- ).getConditions();
70
- store.dispatch(initConditionsAction(conditions));
71
- });
72
-
73
- it('Sets defaults properly', () => {
74
- // Setting defaults
75
- store.dispatch({ type: 'SET_DEFAULTS' });
76
-
77
- expect(store.getState().app.wizard.availableSections).toStrictEqual([
78
- 1, 2, 3,
79
- ]);
80
-
81
- expect(store.getState().inputs.options).toStrictEqual({
82
- 1: [true],
83
- 2: [true],
84
- 3: [false],
85
- 4: [true],
86
- 5: [true],
87
- 6: [true],
88
- 7: [true],
89
- 8: [true],
90
- 9: [true],
91
- 10: [true],
92
- 11: [false],
93
- 12: [true],
94
- 13: [false],
95
- 14: [true],
96
- 15: [false],
97
- 16: [false],
98
- });
99
- });
100
- });
@@ -1,167 +0,0 @@
1
- import { call, put, takeLatest } from "redux-saga/effects";
2
- import {
3
- selectCurrentPage,
4
- selectAvailableSections,
5
- selectCurrentSectionId,
6
- } from "../selectors/app";
7
- import {
8
- selectSectionDefaults,
9
- selectRadioSiblings,
10
- } from "../selectors/references";
11
- import {
12
- selectOptionInput,
13
- selectOptionInputByIndex,
14
- } from "../selectors/inputs";
15
- import { updateOptionAction } from "../actions/inputs";
16
- import { goPageAction } from "../actions/app";
17
- import { selectOptionConditionValue } from "../selectors/conditions";
18
-
19
- function setOptionsDefaults(
20
- id: number,
21
- defaults: any,
22
- parentIndexes?: number[]
23
- ): any {
24
- let ActionsToDispatch: any = [];
25
-
26
- // Getting current condition
27
- const currentConditions = selectOptionConditionValue(id);
28
-
29
- // Getting current values
30
- const currentValues = selectOptionInput(id);
31
-
32
- // Getting indexes to execute defaults on if we recieved no parent indexes
33
- const Indexes: number[] = parentIndexes === undefined ? [] : parentIndexes;
34
- if (parentIndexes === undefined) {
35
- if (currentConditions !== undefined) {
36
- currentConditions.forEach((value, index) => {
37
- if (value === true) Indexes.push(index);
38
- });
39
- } else {
40
- currentValues.forEach((value, index) => {
41
- if (value === true) Indexes.push(index);
42
- });
43
- }
44
- }
45
-
46
- // Getting current value
47
- const defaultValue = defaults.isDefault ? defaults.isDefault : false;
48
-
49
- // If it neither a default value, nor it's true, we stop here
50
- if (
51
- currentValues.reduce((p: boolean, c: boolean) => p && c, true) !== true &&
52
- defaultValue !== true
53
- )
54
- return [];
55
-
56
- // Getting options radio sibling
57
- const siblings = selectRadioSiblings(id);
58
-
59
- // Looping through indexes
60
- Indexes.forEach((occurencyIndex: number) => {
61
- const currentValueOccurency = currentValues[occurencyIndex];
62
- // If current occurency is true we stop here
63
- if (currentValueOccurency === true || defaultValue === false) return;
64
-
65
- // Determining whether one of its radio siblings is already true
66
- let siblingsValue = false;
67
- if (Array.isArray(siblings) && siblings.length > 0) {
68
- siblings.forEach((siblingId) => {
69
- const indexValue = selectOptionInputByIndex(siblingId, occurencyIndex);
70
- siblingsValue =
71
- siblingsValue || (indexValue === undefined ? false : indexValue);
72
- });
73
- }
74
-
75
- // If defaultValue is true and none of it's siblings are, it's
76
- // safe to set it to true
77
- if (!siblingsValue) {
78
- ActionsToDispatch.push([id, defaultValue, occurencyIndex]);
79
- }
80
- });
81
-
82
- // Going through children
83
- Object.keys(defaults.children).forEach((childId) => {
84
- ActionsToDispatch = [
85
- ...ActionsToDispatch,
86
- ...setOptionsDefaults(
87
- parseInt(childId, 10),
88
- defaults.children[childId],
89
- Indexes
90
- ),
91
- ];
92
- });
93
-
94
- return ActionsToDispatch;
95
- }
96
-
97
- function* setDefaultOptionsSection(id: number) {
98
- let ActionsToDispatch: [number, boolean, number][] = [];
99
- // Getting section's defaults
100
- const sectionDefaults = selectSectionDefaults(id);
101
- if (sectionDefaults === undefined) return [];
102
-
103
- Object.keys(sectionDefaults).forEach((optionId) => {
104
- ActionsToDispatch = [
105
- ...ActionsToDispatch,
106
- ...setOptionsDefaults(parseInt(optionId, 10), sectionDefaults[optionId]),
107
- ];
108
- });
109
-
110
- // Setting default options
111
- for (let i = 0; i < ActionsToDispatch.length; i += 1) {
112
- yield put(updateOptionAction(...ActionsToDispatch[i]));
113
- }
114
-
115
- return ActionsToDispatch;
116
- }
117
-
118
- function* setDefaultOptions() {
119
- let ActionsToDispatch: [number, boolean, number][] = [];
120
- // Getting current page & available sections list
121
- const currentPage = selectCurrentPage();
122
- const availableSections = selectAvailableSections();
123
-
124
- // Getting sections
125
- let sections = [...availableSections].splice(0, currentPage - 1);
126
-
127
- // Getting previous availableSections
128
- const previousAvailableSections = selectAvailableSections();
129
- const previousSectionIndex = previousAvailableSections.indexOf(
130
- selectCurrentSectionId()
131
- );
132
-
133
- // Going through sections
134
- for (let i = 0; i < sections.length; i += 1) {
135
- const sectionId = sections[i];
136
- // @ts-ignore: because of saga implementation of call function
137
- const actions = yield call(setDefaultOptionsSection, [sectionId]);
138
-
139
- // If available sections changed, we update the sections array
140
- sections = [...selectAvailableSections()].splice(0, currentPage - 1);
141
- ActionsToDispatch = [...ActionsToDispatch, ...actions];
142
- }
143
- // Getting current availableSections
144
- const currentAvailableSections = selectAvailableSections();
145
- const currentSectionIndex = currentAvailableSections.indexOf(
146
- selectCurrentSectionId()
147
- );
148
-
149
- if (
150
- selectAvailableSections().length <= currentSectionIndex &&
151
- currentSectionIndex !== previousSectionIndex
152
- ) {
153
- let newPage = currentPage;
154
- if (currentSectionIndex > previousSectionIndex) {
155
- newPage += currentSectionIndex - previousSectionIndex;
156
- } else {
157
- newPage -= previousSectionIndex - currentSectionIndex;
158
- }
159
- yield put(goPageAction(newPage));
160
- }
161
- }
162
-
163
- function* setDefaultsSaga() {
164
- yield takeLatest("SET_DEFAULTS", setDefaultOptions);
165
- }
166
-
167
- export default setDefaultsSaga;