@wise/dynamic-flow-client 3.5.0-experimental-b041af5 → 3.5.0-experimental-63c768d

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 (421) hide show
  1. package/build/common/errorBoundary/ErrorBoundary.js +44 -0
  2. package/build/common/errorBoundary/ErrorBoundaryAlert.js +12 -0
  3. package/build/common/makeHttpClient/makeHttpClient.spec.js +141 -0
  4. package/build/common/messages/external-confirmation.messages.js +23 -0
  5. package/build/i18n/de.json +46 -46
  6. package/build/i18n/en.json +46 -46
  7. package/build/i18n/es.json +46 -46
  8. package/build/i18n/fr.json +46 -46
  9. package/build/i18n/hu.json +46 -46
  10. package/build/i18n/id.json +46 -46
  11. package/build/i18n/index.js +36 -0
  12. package/build/i18n/it.json +46 -46
  13. package/build/i18n/ja.json +46 -46
  14. package/build/i18n/pl.json +46 -46
  15. package/build/i18n/pt.json +46 -46
  16. package/build/i18n/ro.json +46 -46
  17. package/build/i18n/ru.json +46 -46
  18. package/build/i18n/th.json +46 -46
  19. package/build/i18n/tr.json +46 -46
  20. package/build/i18n/zh_CN.json +46 -46
  21. package/build/i18n/zh_HK.json +46 -46
  22. package/build/index.js +10 -0
  23. package/build/legacy/common/contexts/eventsContext/EventsContext.spec.js +58 -0
  24. package/build/legacy/common/contexts/featureContext/FeatureContext.spec.js +41 -0
  25. package/build/legacy/common/contexts/logContext/LogContext.spec.js +54 -0
  26. package/build/legacy/common/hooks/useDebouncedFunction/useDebouncedFunction.spec.js +59 -0
  27. package/build/legacy/common/hooks/useExternal/useExternal.spec.js +236 -0
  28. package/build/legacy/common/hooks/useStepPolling/useStepPolling.spec.js +288 -0
  29. package/build/legacy/common/utils/debounce.spec.js +72 -0
  30. package/build/legacy/common/utils/file-utils.spec.js +69 -0
  31. package/build/legacy/common/utils/id-utils.spec.js +12 -0
  32. package/build/legacy/common/utils/is-equal.spec.js +88 -0
  33. package/build/legacy/common/utils/mobile-utils.spec.js +71 -0
  34. package/build/legacy/common/validators/models/model-utils.spec.js +45 -0
  35. package/build/legacy/common/validators/models/model-validators.spec.js +647 -0
  36. package/build/legacy/common/validators/schemas/schema-validators.spec.js +157 -0
  37. package/build/legacy/common/validators/types/type-validators.spec.js +147 -0
  38. package/build/legacy/common/validators/validationFailures/validation-failures.spec.js +198 -0
  39. package/build/legacy/common/validators/validationFailures/validation-failures.utils.spec.js +145 -0
  40. package/build/legacy/common/validators/values/value-validators.spec.js +22 -0
  41. package/build/legacy/dynamicFlow/BackButton.js +22 -0
  42. package/build/legacy/dynamicFlow/DynamicFlow.js +346 -0
  43. package/build/legacy/dynamicFlow/DynamicFlowStep.js +37 -0
  44. package/build/legacy/dynamicFlow/DynamicFlowTypes.js +1 -0
  45. package/build/legacy/dynamicFlow/index.js +1 -0
  46. package/build/legacy/dynamicFlow/stories/dev-tools/DynamicFlow.story.js +78 -0
  47. package/build/legacy/dynamicFlow/stories/dev-tools/ErrorResponses.story.js +124 -0
  48. package/build/legacy/dynamicFlow/stories/dev-tools/Examples.story.js +25 -0
  49. package/build/legacy/dynamicFlow/stories/dev-tools/Features.story.js +33 -0
  50. package/build/legacy/dynamicFlow/stories/dev-tools/JsonSchemaForm.story.js +31 -0
  51. package/build/legacy/dynamicFlow/stories/dev-tools/RefreshOnChange.story.js +194 -0
  52. package/build/legacy/dynamicFlow/stories/dev-tools/SearchFeature.story.js +114 -0
  53. package/build/legacy/dynamicFlow/stories/dev-tools/ServerTest.story.js +44 -0
  54. package/build/legacy/dynamicFlow/stories/dev-tools/Upload.story.js +212 -0
  55. package/build/legacy/dynamicFlow/stories/dev-tools/ValidationAsync.story.js +156 -0
  56. package/build/legacy/dynamicFlow/stories/examples/ObjectConst.story.js +150 -0
  57. package/build/legacy/dynamicFlow/stories/fixtureHttpClient.js +117 -0
  58. package/build/legacy/dynamicFlow/stories/visual-tests/VisualTests.story.js +43 -0
  59. package/build/legacy/dynamicFlow/tests/Actions.spec.js +185 -0
  60. package/build/legacy/dynamicFlow/tests/AllOfSchema.spec.js +196 -0
  61. package/build/legacy/dynamicFlow/tests/AutocompleteHints.spec.js +59 -0
  62. package/build/legacy/dynamicFlow/tests/DynamicFlow.BackButton.spec.js +179 -0
  63. package/build/legacy/dynamicFlow/tests/DynamicFlow.search.spec.js +475 -0
  64. package/build/legacy/dynamicFlow/tests/DynamicFlow.spec.js +559 -0
  65. package/build/legacy/dynamicFlow/tests/DynamicImage.spec.js +287 -0
  66. package/build/legacy/dynamicFlow/tests/DynamicInstructions.spec.js +49 -0
  67. package/build/legacy/dynamicFlow/tests/HiddenSchemas.spec.js +307 -0
  68. package/build/legacy/dynamicFlow/tests/ModalLayout.spec.js +252 -0
  69. package/build/legacy/dynamicFlow/tests/MultiSelect.spec.js +327 -0
  70. package/build/legacy/dynamicFlow/tests/MultipleFileUploadSchema.spec.js +401 -0
  71. package/build/legacy/dynamicFlow/tests/ObjectSchema.spec.js +295 -0
  72. package/build/legacy/dynamicFlow/tests/OneOfSchema.spec.js +773 -0
  73. package/build/legacy/dynamicFlow/tests/PersistAsync.blob-schema.spec.js +331 -0
  74. package/build/legacy/dynamicFlow/tests/PersistAsync.string-schema.spec.js +389 -0
  75. package/build/legacy/dynamicFlow/tests/RefreshStepOnChange.debouncing.spec.js +273 -0
  76. package/build/legacy/dynamicFlow/tests/RefreshStepOnChange.spec.js +567 -0
  77. package/build/legacy/dynamicFlow/tests/RepeatableSchema.spec.js +977 -0
  78. package/build/legacy/dynamicFlow/tests/StepModel.spec.js +119 -0
  79. package/build/legacy/dynamicFlow/tests/ValidationAsync.spec.js +484 -0
  80. package/build/legacy/dynamicFlow/tests/ssr.spec.js +47 -0
  81. package/build/legacy/dynamicFlow/utils/index.js +5 -0
  82. package/build/legacy/dynamicFlow/utils/responseParsers/response-parsers.js +185 -0
  83. package/build/legacy/dynamicFlow/utils/responseParsers/response-parsers.spec.js +463 -0
  84. package/build/legacy/dynamicFlow/utils/useDebouncedRefresh/useDebouncedRefresh.js +26 -0
  85. package/build/legacy/dynamicFlow/utils/useDynamicFlowState.js +137 -0
  86. package/build/legacy/dynamicFlow/utils/useLoader.js +22 -0
  87. package/build/legacy/formControl/Select.spec.js +104 -0
  88. package/build/legacy/formControl/utils/getAutocompleteString.spec.js +30 -0
  89. package/build/legacy/formControl/utils/value-utils.spec.js +158 -0
  90. package/build/legacy/jsonSchemaForm/JsonSchemaForm.end-to-end.spec.js +563 -0
  91. package/build/legacy/jsonSchemaForm/JsonSchemaForm.js +24 -0
  92. package/build/legacy/jsonSchemaForm/arrayTypeSchema/ArraySchema.js +25 -0
  93. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/ArrayListSchema.js +34 -0
  94. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/index.js +1 -0
  95. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchema.js +134 -0
  96. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/RepeatableSchemaStep.js +85 -0
  97. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.js +135 -0
  98. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.spec.js +909 -0
  99. package/build/legacy/jsonSchemaForm/arrayTypeSchema/index.js +1 -0
  100. package/build/legacy/jsonSchemaForm/genericSchema/GenericSchema.js +85 -0
  101. package/build/legacy/jsonSchemaForm/genericSchema/GenericSchema.rtl.spec.js +55 -0
  102. package/build/legacy/jsonSchemaForm/genericSchema/index.js +1 -0
  103. package/build/legacy/jsonSchemaForm/index.js +1 -0
  104. package/build/legacy/jsonSchemaForm/objectSchema/ObjectSchema.js +77 -0
  105. package/build/legacy/jsonSchemaForm/objectSchema/index.js +1 -0
  106. package/build/legacy/jsonSchemaForm/oneOfSchema/OneOfSchema.js +155 -0
  107. package/build/legacy/jsonSchemaForm/oneOfSchema/index.js +1 -0
  108. package/build/legacy/jsonSchemaForm/oneOfSchema/utils.js +68 -0
  109. package/build/legacy/jsonSchemaForm/persistAsyncSchema/PersistAsyncSchema.js +26 -0
  110. package/build/legacy/jsonSchemaForm/persistAsyncSchema/index.js +1 -0
  111. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBasicSchema/index.js +1 -0
  112. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/PersistAsyncBlobSchema.js +131 -0
  113. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/UploadInputAdapter.js +31 -0
  114. package/build/legacy/jsonSchemaForm/persistAsyncSchema/persistAsyncBlobSchema/index.js +1 -0
  115. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/PromotedOneOfSchema.js +72 -0
  116. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/index.js +1 -0
  117. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promoted-one-of-utils.js +8 -0
  118. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfCheckboxControl.js +27 -0
  119. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfControl.js +31 -0
  120. package/build/legacy/jsonSchemaForm/promotedOneOfSchema/promotedOneOfControl/PromotedOneOfRadioControl.js +32 -0
  121. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.js +54 -0
  122. package/build/legacy/jsonSchemaForm/readOnlySchema/ReadOnlySchema.messages.js +13 -0
  123. package/build/legacy/jsonSchemaForm/readOnlySchema/index.js +1 -0
  124. package/build/legacy/jsonSchemaForm/schemaFormControl/SchemaFormControl.spec.js +312 -0
  125. package/build/legacy/jsonSchemaForm/schemaFormControl/utils/mapping-utils.spec.js +231 -0
  126. package/build/legacy/jsonSchemaForm/validationAsyncSchema/ValidationAsyncSchema.js +150 -0
  127. package/build/legacy/jsonSchemaForm/validationAsyncSchema/index.js +1 -0
  128. package/build/legacy/layout/button/DynamicButton.spec.js +152 -0
  129. package/build/legacy/layout/button/utils.spec.js +50 -0
  130. package/build/legacy/layout/icon/DynamicIcon.spec.js +20 -0
  131. package/build/legacy/layout/list/DynamicStatusList.spec.js +111 -0
  132. package/build/legacy/layout/loadingIndicator/DynamicLoadingIndicator.spec.js +25 -0
  133. package/build/legacy/layout/markdown/DynamicMarkdown.spec.js +58 -0
  134. package/build/legacy/layout/review/DynamicReview.spec.js +152 -0
  135. package/build/legacy/step/cameraStep/CameraStep.js +124 -0
  136. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.js +161 -0
  137. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.spec.js +432 -0
  138. package/build/legacy/step/cameraStep/cameraCapture/hooks/useFullScreenOrientationLock.js +60 -0
  139. package/build/legacy/step/cameraStep/cameraCapture/hooks/useVideoConstraints.js +80 -0
  140. package/build/legacy/step/cameraStep/cameraCapture/index.js +1 -0
  141. package/build/legacy/step/cameraStep/cameraCapture/overlay/Overlay.js +77 -0
  142. package/build/legacy/step/cameraStep/cameraCapture/screens/cameraErrorScreen/CameraErrorScreen.js +18 -0
  143. package/build/legacy/step/cameraStep/cameraCapture/screens/index.js +1 -0
  144. package/build/legacy/step/cameraStep/cameraCapture/tracking/index.js +109 -0
  145. package/build/legacy/step/cameraStep/cameraCapture/utils/index.js +107 -0
  146. package/build/legacy/step/cameraStep/index.js +1 -0
  147. package/build/legacy/step/externalConfirmationStep/ExternalConfirmationStep.js +64 -0
  148. package/build/legacy/step/externalConfirmationStep/index.js +1 -0
  149. package/build/legacy/step/index.js +3 -0
  150. package/build/legacy/test-utils/DynamicFlowProviders.js +19 -0
  151. package/build/legacy/test-utils/index.js +4 -0
  152. package/build/legacy/test-utils/legacy-utils.js +69 -0
  153. package/build/legacy/test-utils/log-utils.js +9 -0
  154. package/build/main.js +6 -2
  155. package/build/main.min.js +1 -1
  156. package/build/main.mjs +6 -2
  157. package/build/revamp/DynamicFlowCore.js +299 -0
  158. package/build/revamp/DynamicFlowWise.js +69 -0
  159. package/build/revamp/DynamicFlowWise.spec.js +105 -0
  160. package/build/revamp/domain/components/AlertComponent.js +50 -0
  161. package/build/revamp/domain/components/AllOfComponent.js +72 -0
  162. package/build/revamp/domain/components/BooleanInputComponent.js +108 -0
  163. package/build/revamp/domain/components/BoxComponent.js +65 -0
  164. package/build/revamp/domain/components/ButtonComponent.js +50 -0
  165. package/build/revamp/domain/components/ColumnsComponent.js +74 -0
  166. package/build/revamp/domain/components/ConstComponent.js +50 -0
  167. package/build/revamp/domain/components/ContainerComponent.js +65 -0
  168. package/build/revamp/domain/components/DateInputComponent.js +127 -0
  169. package/build/revamp/domain/components/DecisionComponent.js +50 -0
  170. package/build/revamp/domain/components/DividerComponent.js +50 -0
  171. package/build/revamp/domain/components/FormComponent.js +65 -0
  172. package/build/revamp/domain/components/HeadingComponent.js +50 -0
  173. package/build/revamp/domain/components/ImageComponent.js +50 -0
  174. package/build/revamp/domain/components/InstructionsComponent.js +50 -0
  175. package/build/revamp/domain/components/IntegerInputComponent.js +125 -0
  176. package/build/revamp/domain/components/LoadingIndicatorComponent.js +50 -0
  177. package/build/revamp/domain/components/MarkdownComponent.js +50 -0
  178. package/build/revamp/domain/components/ModalComponent.js +65 -0
  179. package/build/revamp/domain/components/MultiUploadInputComponent.js +190 -0
  180. package/build/revamp/domain/components/NumberInputComponent.js +125 -0
  181. package/build/revamp/domain/components/ObjectComponent.js +104 -0
  182. package/build/revamp/domain/components/ParagraphComponent.js +50 -0
  183. package/build/revamp/domain/components/ReviewComponent.js +50 -0
  184. package/build/revamp/domain/components/SelectInputComponent.js +138 -0
  185. package/build/revamp/domain/components/StatusListComponent.js +50 -0
  186. package/build/revamp/domain/components/StepDomainComponent.js +93 -0
  187. package/build/revamp/domain/components/TextInputComponent.js +125 -0
  188. package/build/revamp/domain/components/UploadInputComponent.js +151 -0
  189. package/build/revamp/domain/components/repeatableComponent/RepeatableComponent.js +148 -0
  190. package/build/revamp/domain/components/repeatableComponent/RepeatableComponent.spec.js +145 -0
  191. package/build/revamp/domain/components/searchComponent/SearchComponent.js +108 -0
  192. package/build/revamp/domain/components/searchComponent/SearchComponent.spec.js +327 -0
  193. package/build/revamp/domain/components/utils/component-utils.js +18 -0
  194. package/build/revamp/domain/components/utils/debounce.js +38 -0
  195. package/build/revamp/domain/components/utils/debounce.spec.js +72 -0
  196. package/build/revamp/domain/components/utils/file-utils.js +46 -0
  197. package/build/revamp/domain/components/utils/getComponentForLocalValueKey.js +31 -0
  198. package/build/revamp/domain/components/utils/isPartialLocalValueMatch.js +40 -0
  199. package/build/revamp/domain/components/utils/isPartialLocalValueMatch.spec.js +108 -0
  200. package/build/revamp/domain/features/events.js +1 -0
  201. package/build/revamp/domain/features/persistAsync/getComponentPersistAsync.js +133 -0
  202. package/build/revamp/domain/features/persistAsync/getComponentPersistAsync.spec.js +199 -0
  203. package/build/revamp/domain/features/persistAsync/getInitialPersistedState.js +6 -0
  204. package/build/revamp/domain/features/persistAsync/getPerformPersistAsync.js +103 -0
  205. package/build/revamp/domain/features/persistAsync/getPerformPersistAsync.spec.js +280 -0
  206. package/build/revamp/domain/features/refresh/getPerformRefresh.js +53 -0
  207. package/build/revamp/domain/features/search/getPerformSearchFunction.js +104 -0
  208. package/build/revamp/domain/features/search/getPerformSearchFunction.spec.js +260 -0
  209. package/build/revamp/domain/features/summary/summary-utils.js +39 -0
  210. package/build/revamp/domain/features/summary/summary-utils.spec.js +110 -0
  211. package/build/revamp/domain/features/utils/http-utils.js +34 -0
  212. package/build/revamp/domain/features/utils/response-utils.js +9 -0
  213. package/build/revamp/domain/features/validation/spec-utils.js +16 -0
  214. package/build/revamp/domain/features/validation/validation-functions.js +12 -0
  215. package/build/revamp/domain/features/validation/validation-functions.spec.js +110 -0
  216. package/build/revamp/domain/features/validation/value-checks.js +111 -0
  217. package/build/revamp/domain/features/validation/value-checks.spec.js +204 -0
  218. package/build/revamp/domain/features/validationAsync/getComponentValidationAsync.js +94 -0
  219. package/build/revamp/domain/features/validationAsync/getComponentValidationAsync.spec.js +177 -0
  220. package/build/revamp/domain/features/validationAsync/getInitialValidationState.js +5 -0
  221. package/build/revamp/domain/features/validationAsync/getPerformValidationAsync.js +107 -0
  222. package/build/revamp/domain/features/validationAsync/getPerformValidationAsync.spec.js +266 -0
  223. package/build/revamp/domain/mappers/layout/alertLayoutToComponent.js +12 -0
  224. package/build/revamp/domain/mappers/layout/boxLayoutToComponents.js +15 -0
  225. package/build/revamp/domain/mappers/layout/buttonLayoutToComponent.js +64 -0
  226. package/build/revamp/domain/mappers/layout/columnsLayoutToComponent.js +18 -0
  227. package/build/revamp/domain/mappers/layout/decisionLayoutToComponent.js +36 -0
  228. package/build/revamp/domain/mappers/layout/dividerLayoutToComponent.js +5 -0
  229. package/build/revamp/domain/mappers/layout/formLayoutToComponent.js +27 -0
  230. package/build/revamp/domain/mappers/layout/headingLayoutToComponent.js +13 -0
  231. package/build/revamp/domain/mappers/layout/imageLayoutToComponent.js +12 -0
  232. package/build/revamp/domain/mappers/layout/infoLayoutToComponent.js +12 -0
  233. package/build/revamp/domain/mappers/layout/instructionsLayoutToComponent.js +18 -0
  234. package/build/revamp/domain/mappers/layout/listLayoutToComponent.js +30 -0
  235. package/build/revamp/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +5 -0
  236. package/build/revamp/domain/mappers/layout/markdownLayoutToComponent.js +12 -0
  237. package/build/revamp/domain/mappers/layout/modalLayoutToComponent.js +17 -0
  238. package/build/revamp/domain/mappers/layout/paragraphLayoutToComponent.js +12 -0
  239. package/build/revamp/domain/mappers/layout/reviewLayoutToComponent.js +51 -0
  240. package/build/revamp/domain/mappers/layout/searchLayoutToComponent.js +14 -0
  241. package/build/revamp/domain/mappers/layout/statusListLayoutToComponent.js +11 -0
  242. package/build/revamp/domain/mappers/mapLayoutToComponent.js +63 -0
  243. package/build/revamp/domain/mappers/mapSchemaToComponent.js +84 -0
  244. package/build/revamp/domain/mappers/mapSchemaToComponent.spec.js +197 -0
  245. package/build/revamp/domain/mappers/mapStepToComponent.js +143 -0
  246. package/build/revamp/domain/mappers/mapStepToComponent.spec.js +184 -0
  247. package/build/revamp/domain/mappers/schema/allOfSchemaToComponent.js +29 -0
  248. package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +35 -0
  249. package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +63 -0
  250. package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +65 -0
  251. package/build/revamp/domain/mappers/schema/blobSchemaToComponent.js +30 -0
  252. package/build/revamp/domain/mappers/schema/booleanSchemaToComponent.js +38 -0
  253. package/build/revamp/domain/mappers/schema/constSchemaToComponent.js +14 -0
  254. package/build/revamp/domain/mappers/schema/integerSchemaToComponent.js +36 -0
  255. package/build/revamp/domain/mappers/schema/numberSchemaToComponent.js +35 -0
  256. package/build/revamp/domain/mappers/schema/objectSchemaToComponent/objectSchemaToComponent.js +41 -0
  257. package/build/revamp/domain/mappers/schema/objectSchemaToComponent/objectSchemaToComponent.spec.js +165 -0
  258. package/build/revamp/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +67 -0
  259. package/build/revamp/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.spec.js +316 -0
  260. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +14 -0
  261. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.spec.js +220 -0
  262. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToDateInputComponent.js +37 -0
  263. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +45 -0
  264. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +32 -0
  265. package/build/revamp/domain/mappers/schema/tests/test-utils.js +27 -0
  266. package/build/revamp/domain/mappers/schema/types.js +1 -0
  267. package/build/revamp/domain/mappers/schema/utils/getPersistAsyncInitialState.js +35 -0
  268. package/build/revamp/domain/mappers/schema/utils/getValidationAsyncInitialState.js +25 -0
  269. package/build/revamp/domain/mappers/schema/utils/mapCommonSchemaProps.js +28 -0
  270. package/build/revamp/domain/mappers/types.js +1 -0
  271. package/build/revamp/domain/mappers/utils/getAutocompleteString.js +76 -0
  272. package/build/revamp/domain/mappers/utils/getAutocompleteString.spec.js +21 -0
  273. package/build/revamp/domain/mappers/utils/getRandomId.js +2 -0
  274. package/build/revamp/domain/mappers/utils/legacy-utils.js +53 -0
  275. package/build/revamp/domain/types.js +1 -0
  276. package/build/revamp/flow/executeRefresh.js +97 -0
  277. package/build/revamp/flow/executeSubmission.js +152 -0
  278. package/build/revamp/flow/getResponseType.js +76 -0
  279. package/build/revamp/flow/response-utils.js +88 -0
  280. package/build/revamp/renderers/CoreContainerRenderer.js +8 -0
  281. package/build/revamp/renderers/LoadingContext.js +7 -0
  282. package/build/revamp/renderers/getRenderFunction.js +55 -0
  283. package/build/revamp/renderers/getSchemaErrorMessageFunction.js +90 -0
  284. package/build/revamp/renderers/mappers/alertComponentToProps.js +4 -0
  285. package/build/revamp/renderers/mappers/allOfComponentToProps.js +11 -0
  286. package/build/revamp/renderers/mappers/booleanInputComponentToProps.js +16 -0
  287. package/build/revamp/renderers/mappers/boxComponentToProps.js +4 -0
  288. package/build/revamp/renderers/mappers/buttonComponentToProps.js +14 -0
  289. package/build/revamp/renderers/mappers/columnsComponentToProps.js +4 -0
  290. package/build/revamp/renderers/mappers/componentToRendererProps.js +105 -0
  291. package/build/revamp/renderers/mappers/containerComponentToProps.js +4 -0
  292. package/build/revamp/renderers/mappers/dateInputComponentToProps.js +13 -0
  293. package/build/revamp/renderers/mappers/decisionComponentToProps.js +4 -0
  294. package/build/revamp/renderers/mappers/dividerComponentToProps.js +4 -0
  295. package/build/revamp/renderers/mappers/formComponentToProps.js +4 -0
  296. package/build/revamp/renderers/mappers/headingComponentToProps.js +11 -0
  297. package/build/revamp/renderers/mappers/hiddenComponentToProps.js +3 -0
  298. package/build/revamp/renderers/mappers/imageComponentToProps.js +11 -0
  299. package/build/revamp/renderers/mappers/instructionsComponentToProps.js +10 -0
  300. package/build/revamp/renderers/mappers/integerInputComponentToProps.js +13 -0
  301. package/build/revamp/renderers/mappers/loadingIndicatorComponentToProps.js +9 -0
  302. package/build/revamp/renderers/mappers/markdownComponentToProps.js +10 -0
  303. package/build/revamp/renderers/mappers/modalComponentToProps.js +10 -0
  304. package/build/revamp/renderers/mappers/multiUploadInputComponentToProps.js +24 -0
  305. package/build/revamp/renderers/mappers/numberInputComponentToProps.js +13 -0
  306. package/build/revamp/renderers/mappers/objectComponentToProps.js +11 -0
  307. package/build/revamp/renderers/mappers/paragraphComponentToProps.js +10 -0
  308. package/build/revamp/renderers/mappers/repeatableComponentToProps.js +40 -0
  309. package/build/revamp/renderers/mappers/reviewComponentToProps.js +11 -0
  310. package/build/revamp/renderers/mappers/searchComponentToProps.js +49 -0
  311. package/build/revamp/renderers/mappers/selectInputComponentToProps.js +29 -0
  312. package/build/revamp/renderers/mappers/statusListComponentToProps.js +10 -0
  313. package/build/revamp/renderers/mappers/textInputComponentToProps.js +13 -0
  314. package/build/revamp/renderers/mappers/uploadInputComponentToProps.js +16 -0
  315. package/build/revamp/renderers/mappers/utils/inputComponentToProps.js +27 -0
  316. package/build/revamp/renderers/step/ExternalConfirmationDialog.js +31 -0
  317. package/build/revamp/renderers/step/StepRenderer.js +29 -0
  318. package/build/revamp/renderers/step/useExternal.js +15 -0
  319. package/build/revamp/renderers/stepComponentToProps.js +9 -0
  320. package/build/revamp/renderers/types.js +1 -0
  321. package/build/revamp/stories/dev-tools/DynamicFlowRevamp.story.js +304 -0
  322. package/build/revamp/stories/dev-tools/EditableStep.story.js +71 -0
  323. package/build/revamp/stories/dev-tools/ErrorHandling.story.js +149 -0
  324. package/build/revamp/stories/dev-tools/External.story.js +83 -0
  325. package/build/revamp/stories/dev-tools/OneOf.Inititalisation.story.js +123 -0
  326. package/build/revamp/stories/dev-tools/PersistAsync.story.js +168 -0
  327. package/build/revamp/stories/dev-tools/RefreshOnChange.story.js +309 -0
  328. package/build/revamp/stories/dev-tools/RefreshOnChange.with.PersistAsync.story.js +1004 -0
  329. package/build/revamp/stories/dev-tools/ServerTest.story.js +81 -0
  330. package/build/revamp/stories/dev-tools/Upload.story.js +221 -0
  331. package/build/revamp/stories/dev-tools/ValidationAsync.story.js +161 -0
  332. package/build/revamp/stories/examples/ObjectConst.story.js +153 -0
  333. package/build/revamp/stories/examples/OneOfInitialisation.story.js +102 -0
  334. package/build/revamp/stories/utils/fixtureHttpClient.js +130 -0
  335. package/build/revamp/stories/utils/mockSearchHandler.js +125 -0
  336. package/build/revamp/stories/visual-tests/VisualTests.story.js +111 -0
  337. package/build/revamp/test-utils/component-utils.js +19 -0
  338. package/build/revamp/test-utils/step-utils.js +6 -0
  339. package/build/revamp/tests/ImageRenderer.spec.js +108 -0
  340. package/build/revamp/tests/InitialAction.spec.js +281 -0
  341. package/build/revamp/tests/InitialStep.spec.js +104 -0
  342. package/build/revamp/tests/Logging.spec.js +112 -0
  343. package/build/revamp/tests/OneOfInitialisation.spec.js +654 -0
  344. package/build/revamp/tests/RefreshOnChange.ResponseHandling.spec.js +322 -0
  345. package/build/revamp/tests/RefreshOnChange.with.Tabs.spec.js +390 -0
  346. package/build/revamp/tests/RefreshOnChangePreserve.spec.js +218 -0
  347. package/build/revamp/tests/Submission.ResponseHandling.spec.js +697 -0
  348. package/build/revamp/tests/Submission.spec.js +399 -0
  349. package/build/revamp/tests/legacy/HiddenSchemas.spec.js +312 -0
  350. package/build/revamp/tests/legacy/MultipleFileUploadSchema.spec.js +447 -0
  351. package/build/revamp/tests/legacy/PersistAsync.blob-schema.spec.js +339 -0
  352. package/build/revamp/tests/legacy/PersistAsync.string-schema.spec.js +385 -0
  353. package/build/revamp/tests/legacy/RefreshStepOnChange.debouncing.spec.js +235 -0
  354. package/build/revamp/tests/legacy/RefreshStepOnChange.spec.js +623 -0
  355. package/build/revamp/tests/legacy/ValidationAsync.spec.js +452 -0
  356. package/build/revamp/tests/legacy/useExternal.spec.js +235 -0
  357. package/build/revamp/types.js +1 -0
  358. package/build/revamp/utils/component-utils.js +86 -0
  359. package/build/revamp/utils/component-utils.spec.js +385 -0
  360. package/build/revamp/utils/findComponent.js +29 -0
  361. package/build/revamp/utils/findComponent.spec.js +92 -0
  362. package/build/revamp/utils/type-utils.js +56 -0
  363. package/build/revamp/utils/type-validators.js +16 -0
  364. package/build/revamp/utils/type-validators.spec.js +163 -0
  365. package/build/revamp/utils/useStableCallback.js +21 -0
  366. package/build/revamp/wise/renderers/AlertRenderer.js +11 -0
  367. package/build/revamp/wise/renderers/BooleanInputRenderer.js +34 -0
  368. package/build/revamp/wise/renderers/BoxRenderer.js +30 -0
  369. package/build/revamp/wise/renderers/ButtonRenderer.js +64 -0
  370. package/build/revamp/wise/renderers/ColumnsRenderer.js +25 -0
  371. package/build/revamp/wise/renderers/DateInputRenderer.js +35 -0
  372. package/build/revamp/wise/renderers/DecisionRenderer.js +29 -0
  373. package/build/revamp/wise/renderers/DividerRenderer.js +10 -0
  374. package/build/revamp/wise/renderers/FormRenderer.js +21 -0
  375. package/build/revamp/wise/renderers/FormSectionRenderer.js +16 -0
  376. package/build/revamp/wise/renderers/HeadingRenderer.js +57 -0
  377. package/build/revamp/wise/renderers/ImageRenderer.js +111 -0
  378. package/build/revamp/wise/renderers/InstructionsRenderer.js +34 -0
  379. package/build/revamp/wise/renderers/IntegerInputRenderer.js +38 -0
  380. package/build/revamp/wise/renderers/LoadingIndicatorRenderer.js +11 -0
  381. package/build/revamp/wise/renderers/MarkdownRenderer.js +22 -0
  382. package/build/revamp/wise/renderers/ModalRenderer.js +25 -0
  383. package/build/revamp/wise/renderers/MultiUploadInputRenderer.js +74 -0
  384. package/build/revamp/wise/renderers/NumberInputRenderer.js +38 -0
  385. package/build/revamp/wise/renderers/ParagraphRenderer.js +44 -0
  386. package/build/revamp/wise/renderers/RepeatableRenderer.js +58 -0
  387. package/build/revamp/wise/renderers/ReviewRenderer.js +46 -0
  388. package/build/revamp/wise/renderers/SearchRenderer.js +63 -0
  389. package/build/revamp/wise/renderers/SelectInputRenderer/OptionMedia.js +27 -0
  390. package/build/revamp/wise/renderers/SelectInputRenderer/RadioInputRendererComponent.js +25 -0
  391. package/build/revamp/wise/renderers/SelectInputRenderer/SelectInputRenderer.js +30 -0
  392. package/build/revamp/wise/renderers/SelectInputRenderer/SelectInputRendererComponent.js +56 -0
  393. package/build/revamp/wise/renderers/SelectInputRenderer/SelectTriggerMedia.js +27 -0
  394. package/build/revamp/wise/renderers/SelectInputRenderer/TabInputRendererComponent.js +33 -0
  395. package/build/revamp/wise/renderers/StatusListRenderer.js +32 -0
  396. package/build/revamp/wise/renderers/TextInputRenderer.js +35 -0
  397. package/build/revamp/wise/renderers/UploadInputRenderer.js +136 -0
  398. package/build/revamp/wise/renderers/components/FieldInput.js +20 -0
  399. package/build/revamp/wise/renderers/components/Help.js +21 -0
  400. package/build/revamp/wise/renderers/components/LabelContentWithHelp.js +6 -0
  401. package/build/revamp/wise/renderers/components/UploadFieldInput.js +25 -0
  402. package/build/revamp/wise/renderers/components/VariableDateInput.js +30 -0
  403. package/build/revamp/wise/renderers/components/VariableTextInput.js +69 -0
  404. package/build/revamp/wise/renderers/components/icon/DynamicIcon.js +17 -0
  405. package/build/revamp/wise/renderers/components/icon/FlagIcon.js +198 -0
  406. package/build/revamp/wise/renderers/components/icon/NamedIcon.js +19 -0
  407. package/build/revamp/wise/renderers/components/icon/NavigationOptionMedia.js +31 -0
  408. package/build/revamp/wise/renderers/getWiseRenderers.js +57 -0
  409. package/build/revamp/wise/renderers/hooks/useSnackBarIfAvailable.js +6 -0
  410. package/build/revamp/wise/renderers/utils/file-utils.js +70 -0
  411. package/build/revamp/wise/renderers/utils/getRandomId.js +2 -0
  412. package/build/revamp/wise/renderers/utils/input-utils.js +6 -0
  413. package/build/revamp/wise/renderers/utils/layout-utils.js +31 -0
  414. package/build/revamp/wise/renderers/utils/value-utils.js +23 -0
  415. package/build/revamp/wise/renderers/utils/value-utils.spec.js +33 -0
  416. package/build/revamp/wise/renderers/validators/type-validators.js +15 -0
  417. package/build/test-utils/NeptuneProviders.js +23 -0
  418. package/build/test-utils/fetch-utils.js +104 -0
  419. package/build/test-utils/index.js +2 -0
  420. package/build/test-utils/rtl-utils.js +20 -0
  421. package/package.json +3 -2
@@ -0,0 +1,111 @@
1
+ import { isArray, isNullish, isNumber, isString } from '../../../utils/type-validators';
2
+ export var getAboveMaxItemsCheck = function (_a, messageFunctions) {
3
+ var maxItems = _a.maxItems;
4
+ return function (value) {
5
+ if (isNumber(maxItems) && isArray(value) && value.length > maxItems) {
6
+ return messageFunctions.maxItems(maxItems);
7
+ }
8
+ return null;
9
+ };
10
+ };
11
+ export var getBelowMinFilesCheck = function (_a, messageFunctions) {
12
+ var minItems = _a.minItems;
13
+ return function (value) {
14
+ if (isNumber(minItems) && isArray(value) && value.length > 0 && value.length < minItems) {
15
+ return messageFunctions.minFiles(minItems);
16
+ }
17
+ return null;
18
+ };
19
+ };
20
+ export var getAboveMaxFilesCheck = function (_a, messageFunctions) {
21
+ var maxItems = _a.maxItems;
22
+ return function (value) {
23
+ if (isNumber(maxItems) && isArray(value) && value.length > maxItems) {
24
+ return messageFunctions.maxFiles(maxItems);
25
+ }
26
+ return null;
27
+ };
28
+ };
29
+ export var getBelowMinItemsCheck = function (_a, messageFunctions) {
30
+ var minItems = _a.minItems;
31
+ return function (value) {
32
+ if (isNumber(minItems) && isArray(value) && value.length > 0 && value.length < minItems) {
33
+ return messageFunctions.minItems(minItems);
34
+ }
35
+ return null;
36
+ };
37
+ };
38
+ export var getAboveMaxLengthCheck = function (_a, messageFunctions) {
39
+ var maxLength = _a.maxLength;
40
+ return function (value) {
41
+ if (isNumber(maxLength) && isString(value) && value.length > maxLength) {
42
+ return messageFunctions.maxLength(maxLength);
43
+ }
44
+ return null;
45
+ };
46
+ };
47
+ export var getBelowMinLengthCheck = function (_a, messageFunctions) {
48
+ var minLength = _a.minLength;
49
+ return function (value) {
50
+ if (isNumber(minLength) && isString(value) && value.length < minLength) {
51
+ return messageFunctions.minLength(minLength);
52
+ }
53
+ return null;
54
+ };
55
+ };
56
+ export var getAboveMaximumCheck = function (_a, messageFunctions) {
57
+ var maximum = _a.maximum;
58
+ return function (value) {
59
+ if (isNumber(maximum) && isNumber(value) && value > maximum) {
60
+ return messageFunctions.maximum(maximum);
61
+ }
62
+ return null;
63
+ };
64
+ };
65
+ export var getBelowMinimumCheck = function (_a, messageFunctions) {
66
+ var minimum = _a.minimum;
67
+ return function (value) {
68
+ if (isNumber(minimum) && isNumber(value) && value < minimum) {
69
+ return messageFunctions.minimum(minimum);
70
+ }
71
+ return null;
72
+ };
73
+ };
74
+ export var getAboveMaximumDateCheck = function (_a, messageFunctions) {
75
+ var maximum = _a.maximum;
76
+ return function (value) {
77
+ if (isString(maximum) && isString(value) && value > maximum) {
78
+ return messageFunctions.maximumDate(maximum);
79
+ }
80
+ return null;
81
+ };
82
+ };
83
+ export var getBelowMinimumDateCheck = function (_a, messageFunctions) {
84
+ var minimum = _a.minimum;
85
+ return function (value) {
86
+ if (isString(minimum) && isString(value) && value < minimum) {
87
+ return messageFunctions.minimumDate(minimum);
88
+ }
89
+ return null;
90
+ };
91
+ };
92
+ export var getNotAdheringToPatternCheck = function (_a, messageFunctions) {
93
+ var pattern = _a.pattern;
94
+ return function (value) {
95
+ if (isString(pattern) && isString(value) && !new RegExp(pattern).test(value)) {
96
+ return messageFunctions.pattern();
97
+ }
98
+ return null;
99
+ };
100
+ };
101
+ export var getRequiredCheck = function (required, messageFunctions) {
102
+ return function (value) {
103
+ if (!required) {
104
+ return null;
105
+ }
106
+ if (isArray(value) && value.length === 0) {
107
+ return messageFunctions.required();
108
+ }
109
+ return isNullish(value) ? messageFunctions.required() : null;
110
+ };
111
+ };
@@ -0,0 +1,204 @@
1
+ import { getAboveMaxLengthCheck, getBelowMinLengthCheck, getAboveMaximumCheck, getBelowMinimumCheck, getAboveMaximumDateCheck, getBelowMinimumDateCheck, getNotAdheringToPatternCheck, getAboveMaxItemsCheck, getBelowMinItemsCheck, getAboveMaxFilesCheck, getBelowMinFilesCheck, } from './value-checks';
2
+ import { mockErrorMessageFunctions } from './spec-utils';
3
+ describe('value checks', function () {
4
+ describe('getAboveMaxLengthCheck', function () {
5
+ it('should return null if the string length is below or equal to the maxLength', function () {
6
+ var schema = { type: 'string', maxLength: 5 };
7
+ var check = getAboveMaxLengthCheck(schema, mockErrorMessageFunctions);
8
+ var belowLength = check('0');
9
+ var atLength = check('01234');
10
+ expect(belowLength).toBeNull();
11
+ expect(atLength).toBeNull();
12
+ });
13
+ it('should return an error message if the string length is above the maxLength', function () {
14
+ var schema = { type: 'string', maxLength: 5 };
15
+ var check = getAboveMaxLengthCheck(schema, mockErrorMessageFunctions);
16
+ expect(check('012345')).toBe('maxLength');
17
+ });
18
+ });
19
+ describe('getBelowMinLengthCheck', function () {
20
+ it('should return null if the string length is above or equal to the minLength', function () {
21
+ var schema = { type: 'string', minLength: 5 };
22
+ var check = getBelowMinLengthCheck(schema, mockErrorMessageFunctions);
23
+ var atLength = check('01234');
24
+ var aboveLength = check('0123456789');
25
+ expect(atLength).toBeNull();
26
+ expect(aboveLength).toBeNull();
27
+ });
28
+ it('should return an error message if the string length is below the minLength', function () {
29
+ var schema = { type: 'string', minLength: 5 };
30
+ var check = getBelowMinLengthCheck(schema, mockErrorMessageFunctions);
31
+ expect(check('0')).toBe('minLength');
32
+ });
33
+ });
34
+ describe('getAboveMaximumCheck', function () {
35
+ it('should return null if the number is below or equal to the maximum', function () {
36
+ var schema = { type: 'number', maximum: 10 };
37
+ var check = getAboveMaximumCheck(schema, mockErrorMessageFunctions);
38
+ var atMax = check(5);
39
+ var belowMax = check(10);
40
+ expect(atMax).toBeNull();
41
+ expect(belowMax).toBeNull();
42
+ });
43
+ it('should return an error message if the number is above the maximum', function () {
44
+ var schema = { type: 'number', maximum: 10 };
45
+ var check = getAboveMaximumCheck(schema, mockErrorMessageFunctions);
46
+ expect(check(15)).toBe('maximum');
47
+ });
48
+ });
49
+ describe('getBelowMinimumCheck', function () {
50
+ it('should return null if the number is above or equal to the minimum', function () {
51
+ var schema = { type: 'integer', minimum: 5 };
52
+ var check = getBelowMinimumCheck(schema, mockErrorMessageFunctions);
53
+ var atMinimum = check(5);
54
+ var aboveMinimum = check(10);
55
+ expect(atMinimum).toBeNull();
56
+ expect(aboveMinimum).toBeNull();
57
+ });
58
+ it('should return an error message if the number is below the minimum', function () {
59
+ var schema = { type: 'integer', minimum: 10 };
60
+ var check = getBelowMinimumCheck(schema, mockErrorMessageFunctions);
61
+ expect(check(5)).toBe('minimum');
62
+ });
63
+ });
64
+ describe('getAboveMaximumDateCheck', function () {
65
+ it('should return null if the date is below or equal to the maximum', function () {
66
+ var schema = { type: 'string', format: 'date', maximum: '2022-01-01' };
67
+ var check = getAboveMaximumDateCheck(schema, mockErrorMessageFunctions);
68
+ var atDate = check('2022-01-01');
69
+ var belowDate = check('2021-12-31');
70
+ expect(atDate).toBeNull();
71
+ expect(belowDate).toBeNull();
72
+ });
73
+ it('should return an error message if the date is above the maximum', function () {
74
+ var schema = { type: 'string', format: 'date', maximum: '2022-01-01' };
75
+ var check = getAboveMaximumDateCheck(schema, mockErrorMessageFunctions);
76
+ expect(check('2022-01-02')).toBe('maximumDate');
77
+ });
78
+ });
79
+ describe('getBelowMinimumDateCheck', function () {
80
+ it('should return null if the date is above or equal to the minimum', function () {
81
+ var schema = { type: 'string', format: 'date', minimum: '2022-01-01' };
82
+ var check = getBelowMinimumDateCheck(schema, mockErrorMessageFunctions);
83
+ var atDate = check('2022-01-01');
84
+ var aboveDate = check('2022-01-02');
85
+ expect(atDate).toBeNull();
86
+ expect(aboveDate).toBeNull();
87
+ });
88
+ it('should return an error message if the date is below the minimum', function () {
89
+ var schema = { type: 'string', format: 'date', minimum: '2022-01-01' };
90
+ var check = getBelowMinimumDateCheck(schema, mockErrorMessageFunctions);
91
+ expect(check('2021-12-31')).toBe('minimumDate');
92
+ });
93
+ });
94
+ describe('getNotAdheringToPatternCheck', function () {
95
+ it('should return null if the string adheres to the pattern', function () {
96
+ var schema = { type: 'string', pattern: '[A-Za-z]+' };
97
+ var check = getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions);
98
+ expect(check('Hello')).toBeNull();
99
+ });
100
+ it('should return an error message if the string does not adhere to the pattern', function () {
101
+ var schema = { type: 'string', pattern: '[A-Za-z]+' };
102
+ var check = getNotAdheringToPatternCheck(schema, mockErrorMessageFunctions);
103
+ expect(check('01234')).toBe('pattern');
104
+ });
105
+ });
106
+ describe('getAboveMaxItemsCheck', function () {
107
+ var arraySchema = {
108
+ type: 'array',
109
+ items: { type: 'string' },
110
+ addItemTitle: '',
111
+ editItemTitle: '',
112
+ maxItems: 5
113
+ };
114
+ it('should return null if the array length is below or equal to the maxItems', function () {
115
+ var check = getAboveMaxItemsCheck(arraySchema, mockErrorMessageFunctions);
116
+ var belowLength = check(['0']);
117
+ var atLength = check(['0', '1', '2', '3', '4']);
118
+ expect(belowLength).toBeNull();
119
+ expect(atLength).toBeNull();
120
+ });
121
+ it('should return an error message if the array length is above the maxItems', function () {
122
+ var check = getAboveMaxItemsCheck(arraySchema, mockErrorMessageFunctions);
123
+ expect(check(['0', '1', '2', '3', '4', '5'])).toBe('maxItems');
124
+ });
125
+ });
126
+ describe('getBelowMinItemsCheck', function () {
127
+ var arraySchema = {
128
+ type: 'array',
129
+ items: { type: 'string' },
130
+ addItemTitle: '',
131
+ editItemTitle: '',
132
+ minItems: 3
133
+ };
134
+ it('should return null if the array length is above or equal to the minItems', function () {
135
+ var check = getBelowMinItemsCheck(arraySchema, mockErrorMessageFunctions);
136
+ var atLength = check(['0', '1', '2']);
137
+ var aboveLength = check(['0', '1', '2', '3']);
138
+ expect(atLength).toBeNull();
139
+ expect(aboveLength).toBeNull();
140
+ });
141
+ it('should return null if the array is empty', function () {
142
+ var check = getBelowMinItemsCheck(arraySchema, mockErrorMessageFunctions);
143
+ var empty = check([]);
144
+ expect(empty).toBeNull();
145
+ });
146
+ it('should return an error message if the array length is below the minItems', function () {
147
+ var check = getBelowMinItemsCheck(arraySchema, mockErrorMessageFunctions);
148
+ expect(check(['0', '1'])).toBe('minItems');
149
+ });
150
+ });
151
+ describe('getAboveMaxFilesCheck', function () {
152
+ var arraySchema = {
153
+ type: 'array',
154
+ items: { type: 'string' },
155
+ addItemTitle: '',
156
+ editItemTitle: '',
157
+ maxItems: 2
158
+ };
159
+ it('should return null if the array length is below or equal to the maxItems', function () {
160
+ var check = getAboveMaxFilesCheck(arraySchema, mockErrorMessageFunctions);
161
+ var belowLength = check([new File([new Blob()], '0')]);
162
+ var atLength = check([new File([new Blob()], '0'), new File([new Blob()], '1')]);
163
+ expect(belowLength).toBeNull();
164
+ expect(atLength).toBeNull();
165
+ });
166
+ it('should return an error message if the array length is above the maxItems', function () {
167
+ var check = getAboveMaxFilesCheck(arraySchema, mockErrorMessageFunctions);
168
+ expect(check([
169
+ new File([new Blob()], '0'),
170
+ new File([new Blob()], '1'),
171
+ new File([new Blob()], '2'),
172
+ ])).toBe('maxFiles');
173
+ });
174
+ });
175
+ describe('getBelowMinFilesCheck', function () {
176
+ var arraySchema = {
177
+ type: 'array',
178
+ items: { type: 'string' },
179
+ addItemTitle: '',
180
+ editItemTitle: '',
181
+ minItems: 2
182
+ };
183
+ it('should return null if the array length is above or equal to the minItems', function () {
184
+ var check = getBelowMinFilesCheck(arraySchema, mockErrorMessageFunctions);
185
+ var atLength = check([new File([new Blob()], '0'), new File([new Blob()], '1')]);
186
+ var aboveLength = check([
187
+ new File([new Blob()], '0'),
188
+ new File([new Blob()], '1'),
189
+ new File([new Blob()], '2'),
190
+ ]);
191
+ expect(atLength).toBeNull();
192
+ expect(aboveLength).toBeNull();
193
+ });
194
+ it('should return null if the array is empty', function () {
195
+ var check = getBelowMinFilesCheck(arraySchema, mockErrorMessageFunctions);
196
+ var empty = check([]);
197
+ expect(empty).toBeNull();
198
+ });
199
+ it('should return an error message if the array length is below the minItems', function () {
200
+ var check = getBelowMinFilesCheck(arraySchema, mockErrorMessageFunctions);
201
+ expect(check([new File([new Blob()], '0')])).toBe('minFiles');
202
+ });
203
+ });
204
+ });
@@ -0,0 +1,94 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { isNullish } from '../../../utils/type-validators';
38
+ import { abortAndResetController } from '../utils/http-utils';
39
+ /**
40
+ * Creates an onValidateAsync handler for a component.
41
+ */
42
+ export var getComponentValidationAsync = function (update, performValidationAsync) {
43
+ /**
44
+ * Will update the validationState when a new request is made, and will update
45
+ * the description or set errors when the request completes.
46
+ */
47
+ return function (validationState, currentValue) { return __awaiter(void 0, void 0, void 0, function () {
48
+ var abortController, lastSubmitted, newAbortController, signal, newSubmission;
49
+ return __generator(this, function (_a) {
50
+ abortController = validationState.abortController, lastSubmitted = validationState.lastSubmitted;
51
+ // Ignore subsequent requests for the same value
52
+ if (lastSubmitted === currentValue) {
53
+ return [2 /*return*/];
54
+ }
55
+ newAbortController = abortAndResetController(abortController);
56
+ if (isNullish(currentValue)) {
57
+ update(function (draft) {
58
+ draft.validationState = {
59
+ abortController: newAbortController,
60
+ lastSubmitted: currentValue,
61
+ messages: {}
62
+ };
63
+ });
64
+ return [2 /*return*/];
65
+ }
66
+ signal = newAbortController.signal;
67
+ newSubmission = performValidationAsync({ value: currentValue, signal: signal })
68
+ .then(function (message) {
69
+ update(function (draft) {
70
+ if (message) {
71
+ draft.validationState.messages.success = message;
72
+ }
73
+ });
74
+ return message;
75
+ })["catch"](function (error) {
76
+ if (error instanceof DOMException && error.name === 'AbortError') {
77
+ // No op, the request was aborted
78
+ return null;
79
+ }
80
+ update(function (draft) {
81
+ draft.validationState.messages.error = error.message;
82
+ });
83
+ });
84
+ update(function (draft) {
85
+ draft.validationState = {
86
+ abortController: newAbortController,
87
+ lastSubmitted: currentValue,
88
+ messages: {}
89
+ };
90
+ });
91
+ return [2 /*return*/, newSubmission];
92
+ });
93
+ }); };
94
+ };
@@ -0,0 +1,177 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { abortableDelay } from '../../../../test-utils/fetch-utils';
49
+ import { createTextInputComponent, } from '../../components/TextInputComponent';
50
+ import { getInputUpdateFunction } from '../../components/utils/component-utils';
51
+ import { getUpdateFunctionMock } from '../../mappers/schema/tests/test-utils';
52
+ import { getInitialPersistedState } from '../persistAsync/getInitialPersistedState';
53
+ import { getInitialValidationState } from './getInitialValidationState';
54
+ import { getComponentValidationAsync } from './getComponentValidationAsync';
55
+ import { waitFor } from '@testing-library/react';
56
+ var defaultProps = {
57
+ uid: '123',
58
+ checks: [],
59
+ analyticsId: 'analyticsId',
60
+ autoComplete: 'off',
61
+ disabled: true,
62
+ errors: [],
63
+ hidden: false,
64
+ id: 'id',
65
+ required: false,
66
+ persistedState: getInitialPersistedState(),
67
+ validationState: getInitialValidationState(),
68
+ value: '',
69
+ performPersistAsync: undefined,
70
+ performRefresh: undefined,
71
+ summariser: function () { return ({}); }
72
+ };
73
+ describe('getComponentValidationAsync', function () {
74
+ it('should make request and update message if response is ok', function () { return __awaiter(void 0, void 0, void 0, function () {
75
+ var performValidationAsync, mockUpdateFunction, inputComponent, update, validate;
76
+ return __generator(this, function (_a) {
77
+ switch (_a.label) {
78
+ case 0:
79
+ performValidationAsync = jest.fn().mockResolvedValue('Everything is ok');
80
+ mockUpdateFunction = getUpdateFunctionMock(function () { return inputComponent; });
81
+ inputComponent = createTextInputComponent(__assign(__assign({}, defaultProps), { performValidationAsync: performValidationAsync, value: 'test' }), mockUpdateFunction);
82
+ update = getInputUpdateFunction('uid', mockUpdateFunction);
83
+ validate = getComponentValidationAsync(update, performValidationAsync);
84
+ void validate(inputComponent.validationState, inputComponent.getLocalValue());
85
+ expect(performValidationAsync).toHaveBeenCalledWith(expect.objectContaining({ value: 'test' }));
86
+ return [4 /*yield*/, waitFor(function () {
87
+ return expect(inputComponent.validationState.messages.success).toBe('Everything is ok');
88
+ })];
89
+ case 1:
90
+ _a.sent();
91
+ return [2 /*return*/];
92
+ }
93
+ });
94
+ }); });
95
+ it('should not perform a second request if called with the same value twice', function () { return __awaiter(void 0, void 0, void 0, function () {
96
+ var performValidationAsync, mockUpdateFunction, inputComponent, update, validate;
97
+ return __generator(this, function (_a) {
98
+ performValidationAsync = jest.fn().mockResolvedValue('Everything is ok');
99
+ mockUpdateFunction = getUpdateFunctionMock(function () { return inputComponent; });
100
+ inputComponent = createTextInputComponent(__assign(__assign({}, defaultProps), { performValidationAsync: performValidationAsync, value: 'test' }), mockUpdateFunction);
101
+ update = getInputUpdateFunction('uid', mockUpdateFunction);
102
+ validate = getComponentValidationAsync(update, performValidationAsync);
103
+ void validate(inputComponent.validationState, inputComponent.getLocalValue());
104
+ void validate(inputComponent.validationState, inputComponent.getLocalValue());
105
+ expect(performValidationAsync).toHaveBeenCalledTimes(1);
106
+ return [2 /*return*/];
107
+ });
108
+ }); });
109
+ it('should set component errors if validation fails', function () { return __awaiter(void 0, void 0, void 0, function () {
110
+ var errorMessage, performValidationAsync, mockUpdateFunction, inputComponent, update, validate;
111
+ return __generator(this, function (_a) {
112
+ switch (_a.label) {
113
+ case 0:
114
+ errorMessage = 'This field is invalid';
115
+ performValidationAsync = jest.fn().mockRejectedValue(new Error(errorMessage));
116
+ mockUpdateFunction = getUpdateFunctionMock(function () { return inputComponent; });
117
+ inputComponent = createTextInputComponent(__assign(__assign({}, defaultProps), { performValidationAsync: performValidationAsync, value: 'test' }), mockUpdateFunction);
118
+ update = getInputUpdateFunction('uid', mockUpdateFunction);
119
+ validate = getComponentValidationAsync(update, performValidationAsync);
120
+ void validate(inputComponent.validationState, inputComponent.getLocalValue());
121
+ return [4 /*yield*/, waitFor(function () {
122
+ return expect(inputComponent.validationState.messages.error).toEqual(errorMessage);
123
+ })];
124
+ case 1:
125
+ _a.sent();
126
+ return [2 /*return*/];
127
+ }
128
+ });
129
+ }); });
130
+ it('should ignore previous responses if a second persist has been triggered', function () { return __awaiter(void 0, void 0, void 0, function () {
131
+ var performValidationAsync, mockUpdateFunction, inputComponent, update, validate;
132
+ return __generator(this, function (_a) {
133
+ switch (_a.label) {
134
+ case 0:
135
+ jest.useFakeTimers();
136
+ performValidationAsync = jest
137
+ .fn()
138
+ .mockImplementationOnce(function (_a) {
139
+ var signal = _a.signal;
140
+ return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_b) {
141
+ return [2 /*return*/, abortableDelay(200, signal).then(function () { return 'response-1'; })];
142
+ }); });
143
+ })
144
+ .mockImplementationOnce(function (_a) {
145
+ var signal = _a.signal;
146
+ return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_b) {
147
+ return [2 /*return*/, abortableDelay(10, signal).then(function () { return 'response-2'; })];
148
+ }); });
149
+ });
150
+ mockUpdateFunction = getUpdateFunctionMock(function () { return inputComponent; });
151
+ inputComponent = createTextInputComponent(__assign(__assign({}, defaultProps), { performValidationAsync: performValidationAsync, value: 'test' }), mockUpdateFunction);
152
+ update = getInputUpdateFunction('uid', mockUpdateFunction);
153
+ validate = getComponentValidationAsync(update, performValidationAsync);
154
+ void validate(inputComponent.validationState, inputComponent.getLocalValue());
155
+ inputComponent.onChange('new-value');
156
+ void validate(inputComponent.validationState, inputComponent.getLocalValue());
157
+ // Second callback has resolved
158
+ return [4 /*yield*/, jest.advanceTimersByTimeAsync(100)];
159
+ case 1:
160
+ // Second callback has resolved
161
+ _a.sent();
162
+ return [4 /*yield*/, waitFor(function () { return expect(inputComponent.validationState.messages.success).toBe('response-2'); })];
163
+ case 2:
164
+ _a.sent();
165
+ // First callback has resolved, but value is ignored
166
+ return [4 /*yield*/, jest.advanceTimersByTimeAsync(100)];
167
+ case 3:
168
+ // First callback has resolved, but value is ignored
169
+ _a.sent();
170
+ return [4 /*yield*/, waitFor(function () { return expect(inputComponent.validationState.messages.success).toBe('response-2'); })];
171
+ case 4:
172
+ _a.sent();
173
+ return [2 /*return*/];
174
+ }
175
+ });
176
+ }); });
177
+ });
@@ -0,0 +1,5 @@
1
+ export var getInitialValidationState = function () { return ({
2
+ abortController: new AbortController(),
3
+ lastSubmitted: null,
4
+ messages: {}
5
+ }); };