@wise/dynamic-flow-client 3.5.0-experimental-6654c72 → 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 (296) hide show
  1. package/build/common/makeHttpClient/makeHttpClient.spec.js +141 -0
  2. package/build/i18n/de.json +46 -46
  3. package/build/i18n/en.json +46 -46
  4. package/build/i18n/es.json +46 -46
  5. package/build/i18n/fr.json +46 -46
  6. package/build/i18n/hu.json +46 -46
  7. package/build/i18n/id.json +46 -46
  8. package/build/i18n/it.json +46 -46
  9. package/build/i18n/ja.json +46 -46
  10. package/build/i18n/pl.json +46 -46
  11. package/build/i18n/pt.json +46 -46
  12. package/build/i18n/ro.json +46 -46
  13. package/build/i18n/ru.json +46 -46
  14. package/build/i18n/th.json +46 -46
  15. package/build/i18n/tr.json +46 -46
  16. package/build/i18n/zh_CN.json +46 -46
  17. package/build/i18n/zh_HK.json +46 -46
  18. package/build/index.js +10 -0
  19. package/build/legacy/common/contexts/eventsContext/EventsContext.spec.js +58 -0
  20. package/build/legacy/common/contexts/featureContext/FeatureContext.spec.js +41 -0
  21. package/build/legacy/common/contexts/logContext/LogContext.spec.js +54 -0
  22. package/build/legacy/common/hooks/useDebouncedFunction/useDebouncedFunction.spec.js +59 -0
  23. package/build/legacy/common/hooks/useExternal/useExternal.spec.js +236 -0
  24. package/build/legacy/common/hooks/useStepPolling/useStepPolling.spec.js +288 -0
  25. package/build/legacy/common/utils/debounce.spec.js +72 -0
  26. package/build/legacy/common/utils/file-utils.spec.js +69 -0
  27. package/build/legacy/common/utils/id-utils.spec.js +12 -0
  28. package/build/legacy/common/utils/is-equal.spec.js +88 -0
  29. package/build/legacy/common/utils/mobile-utils.spec.js +71 -0
  30. package/build/legacy/common/validators/models/model-utils.spec.js +45 -0
  31. package/build/legacy/common/validators/models/model-validators.spec.js +647 -0
  32. package/build/legacy/common/validators/schemas/schema-validators.spec.js +157 -0
  33. package/build/legacy/common/validators/types/type-validators.spec.js +147 -0
  34. package/build/legacy/common/validators/validationFailures/validation-failures.spec.js +198 -0
  35. package/build/legacy/common/validators/validationFailures/validation-failures.utils.spec.js +145 -0
  36. package/build/legacy/common/validators/values/value-validators.spec.js +22 -0
  37. package/build/legacy/dynamicFlow/stories/dev-tools/DynamicFlow.story.js +78 -0
  38. package/build/legacy/dynamicFlow/stories/dev-tools/ErrorResponses.story.js +124 -0
  39. package/build/legacy/dynamicFlow/stories/dev-tools/Examples.story.js +25 -0
  40. package/build/legacy/dynamicFlow/stories/dev-tools/Features.story.js +33 -0
  41. package/build/legacy/dynamicFlow/stories/dev-tools/JsonSchemaForm.story.js +31 -0
  42. package/build/legacy/dynamicFlow/stories/dev-tools/RefreshOnChange.story.js +194 -0
  43. package/build/legacy/dynamicFlow/stories/dev-tools/SearchFeature.story.js +114 -0
  44. package/build/legacy/dynamicFlow/stories/dev-tools/ServerTest.story.js +44 -0
  45. package/build/legacy/dynamicFlow/stories/dev-tools/Upload.story.js +212 -0
  46. package/build/legacy/dynamicFlow/stories/dev-tools/ValidationAsync.story.js +156 -0
  47. package/build/legacy/dynamicFlow/stories/examples/ObjectConst.story.js +150 -0
  48. package/build/legacy/dynamicFlow/stories/fixtureHttpClient.js +117 -0
  49. package/build/legacy/dynamicFlow/stories/visual-tests/VisualTests.story.js +43 -0
  50. package/build/legacy/dynamicFlow/tests/Actions.spec.js +185 -0
  51. package/build/legacy/dynamicFlow/tests/AllOfSchema.spec.js +196 -0
  52. package/build/legacy/dynamicFlow/tests/AutocompleteHints.spec.js +59 -0
  53. package/build/legacy/dynamicFlow/tests/DynamicFlow.BackButton.spec.js +179 -0
  54. package/build/legacy/dynamicFlow/tests/DynamicFlow.search.spec.js +475 -0
  55. package/build/legacy/dynamicFlow/tests/DynamicFlow.spec.js +559 -0
  56. package/build/legacy/dynamicFlow/tests/DynamicImage.spec.js +287 -0
  57. package/build/legacy/dynamicFlow/tests/DynamicInstructions.spec.js +49 -0
  58. package/build/legacy/dynamicFlow/tests/HiddenSchemas.spec.js +307 -0
  59. package/build/legacy/dynamicFlow/tests/ModalLayout.spec.js +252 -0
  60. package/build/legacy/dynamicFlow/tests/MultiSelect.spec.js +327 -0
  61. package/build/legacy/dynamicFlow/tests/MultipleFileUploadSchema.spec.js +401 -0
  62. package/build/legacy/dynamicFlow/tests/ObjectSchema.spec.js +295 -0
  63. package/build/legacy/dynamicFlow/tests/OneOfSchema.spec.js +773 -0
  64. package/build/legacy/dynamicFlow/tests/PersistAsync.blob-schema.spec.js +331 -0
  65. package/build/legacy/dynamicFlow/tests/PersistAsync.string-schema.spec.js +389 -0
  66. package/build/legacy/dynamicFlow/tests/RefreshStepOnChange.debouncing.spec.js +273 -0
  67. package/build/legacy/dynamicFlow/tests/RefreshStepOnChange.spec.js +567 -0
  68. package/build/legacy/dynamicFlow/tests/RepeatableSchema.spec.js +977 -0
  69. package/build/legacy/dynamicFlow/tests/StepModel.spec.js +119 -0
  70. package/build/legacy/dynamicFlow/tests/ValidationAsync.spec.js +484 -0
  71. package/build/legacy/dynamicFlow/tests/ssr.spec.js +47 -0
  72. package/build/legacy/dynamicFlow/utils/responseParsers/response-parsers.spec.js +463 -0
  73. package/build/legacy/formControl/Select.spec.js +104 -0
  74. package/build/legacy/formControl/utils/getAutocompleteString.spec.js +30 -0
  75. package/build/legacy/formControl/utils/value-utils.spec.js +158 -0
  76. package/build/legacy/jsonSchemaForm/JsonSchemaForm.end-to-end.spec.js +563 -0
  77. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/index.js +1 -0
  78. package/build/legacy/jsonSchemaForm/arrayTypeSchema/arrayListSchema/repeatableSchema/utils/summary-utils.spec.js +909 -0
  79. package/build/legacy/jsonSchemaForm/genericSchema/GenericSchema.rtl.spec.js +55 -0
  80. package/build/legacy/jsonSchemaForm/schemaFormControl/SchemaFormControl.spec.js +312 -0
  81. package/build/legacy/jsonSchemaForm/schemaFormControl/utils/mapping-utils.spec.js +231 -0
  82. package/build/legacy/layout/button/DynamicButton.spec.js +152 -0
  83. package/build/legacy/layout/button/utils.spec.js +50 -0
  84. package/build/legacy/layout/icon/DynamicIcon.spec.js +20 -0
  85. package/build/legacy/layout/list/DynamicStatusList.spec.js +111 -0
  86. package/build/legacy/layout/loadingIndicator/DynamicLoadingIndicator.spec.js +25 -0
  87. package/build/legacy/layout/markdown/DynamicMarkdown.spec.js +58 -0
  88. package/build/legacy/layout/review/DynamicReview.spec.js +152 -0
  89. package/build/legacy/step/cameraStep/cameraCapture/CameraCapture.spec.js +432 -0
  90. package/build/legacy/test-utils/DynamicFlowProviders.js +19 -0
  91. package/build/legacy/test-utils/index.js +4 -0
  92. package/build/legacy/test-utils/legacy-utils.js +69 -0
  93. package/build/legacy/test-utils/log-utils.js +9 -0
  94. package/build/main.js +20 -20
  95. package/build/main.min.js +1 -1
  96. package/build/main.mjs +20 -20
  97. package/build/revamp/DynamicFlowCore.js +299 -0
  98. package/build/revamp/DynamicFlowWise.js +69 -0
  99. package/build/revamp/DynamicFlowWise.spec.js +105 -0
  100. package/build/revamp/domain/components/repeatableComponent/RepeatableComponent.spec.js +145 -0
  101. package/build/revamp/domain/components/searchComponent/SearchComponent.spec.js +327 -0
  102. package/build/revamp/domain/components/utils/debounce.spec.js +72 -0
  103. package/build/revamp/domain/components/utils/isPartialLocalValueMatch.spec.js +108 -0
  104. package/build/revamp/domain/features/persistAsync/getComponentPersistAsync.spec.js +199 -0
  105. package/build/revamp/domain/features/persistAsync/getInitialPersistedState.js +6 -0
  106. package/build/revamp/domain/features/persistAsync/getPerformPersistAsync.spec.js +280 -0
  107. package/build/revamp/domain/features/search/getPerformSearchFunction.js +104 -0
  108. package/build/revamp/domain/features/search/getPerformSearchFunction.spec.js +260 -0
  109. package/build/revamp/domain/features/summary/summary-utils.spec.js +110 -0
  110. package/build/revamp/domain/features/validation/spec-utils.js +16 -0
  111. package/build/revamp/domain/features/validation/validation-functions.spec.js +110 -0
  112. package/build/revamp/domain/features/validation/value-checks.spec.js +204 -0
  113. package/build/revamp/domain/features/validationAsync/getComponentValidationAsync.spec.js +177 -0
  114. package/build/revamp/domain/features/validationAsync/getInitialValidationState.js +5 -0
  115. package/build/revamp/domain/features/validationAsync/getPerformValidationAsync.spec.js +266 -0
  116. package/build/revamp/domain/mappers/layout/alertLayoutToComponent.js +12 -0
  117. package/build/revamp/domain/mappers/layout/boxLayoutToComponents.js +15 -0
  118. package/build/revamp/domain/mappers/layout/buttonLayoutToComponent.js +64 -0
  119. package/build/revamp/domain/mappers/layout/columnsLayoutToComponent.js +18 -0
  120. package/build/revamp/domain/mappers/layout/decisionLayoutToComponent.js +36 -0
  121. package/build/revamp/domain/mappers/layout/dividerLayoutToComponent.js +5 -0
  122. package/build/revamp/domain/mappers/layout/formLayoutToComponent.js +27 -0
  123. package/build/revamp/domain/mappers/layout/headingLayoutToComponent.js +13 -0
  124. package/build/revamp/domain/mappers/layout/imageLayoutToComponent.js +12 -0
  125. package/build/revamp/domain/mappers/layout/infoLayoutToComponent.js +12 -0
  126. package/build/revamp/domain/mappers/layout/instructionsLayoutToComponent.js +18 -0
  127. package/build/revamp/domain/mappers/layout/listLayoutToComponent.js +30 -0
  128. package/build/revamp/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +5 -0
  129. package/build/revamp/domain/mappers/layout/markdownLayoutToComponent.js +12 -0
  130. package/build/revamp/domain/mappers/layout/modalLayoutToComponent.js +17 -0
  131. package/build/revamp/domain/mappers/layout/paragraphLayoutToComponent.js +12 -0
  132. package/build/revamp/domain/mappers/layout/reviewLayoutToComponent.js +51 -0
  133. package/build/revamp/domain/mappers/layout/searchLayoutToComponent.js +14 -0
  134. package/build/revamp/domain/mappers/layout/statusListLayoutToComponent.js +11 -0
  135. package/build/revamp/domain/mappers/mapLayoutToComponent.js +63 -0
  136. package/build/revamp/domain/mappers/mapSchemaToComponent.js +84 -0
  137. package/build/revamp/domain/mappers/mapSchemaToComponent.spec.js +197 -0
  138. package/build/revamp/domain/mappers/mapStepToComponent.js +143 -0
  139. package/build/revamp/domain/mappers/mapStepToComponent.spec.js +184 -0
  140. package/build/revamp/domain/mappers/schema/allOfSchemaToComponent.js +29 -0
  141. package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +35 -0
  142. package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +63 -0
  143. package/build/revamp/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +65 -0
  144. package/build/revamp/domain/mappers/schema/blobSchemaToComponent.js +30 -0
  145. package/build/revamp/domain/mappers/schema/booleanSchemaToComponent.js +38 -0
  146. package/build/revamp/domain/mappers/schema/constSchemaToComponent.js +14 -0
  147. package/build/revamp/domain/mappers/schema/integerSchemaToComponent.js +36 -0
  148. package/build/revamp/domain/mappers/schema/numberSchemaToComponent.js +35 -0
  149. package/build/revamp/domain/mappers/schema/objectSchemaToComponent/objectSchemaToComponent.js +41 -0
  150. package/build/revamp/domain/mappers/schema/objectSchemaToComponent/objectSchemaToComponent.spec.js +165 -0
  151. package/build/revamp/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +67 -0
  152. package/build/revamp/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.spec.js +316 -0
  153. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +14 -0
  154. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.spec.js +220 -0
  155. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToDateInputComponent.js +37 -0
  156. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +45 -0
  157. package/build/revamp/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +32 -0
  158. package/build/revamp/domain/mappers/schema/tests/test-utils.js +27 -0
  159. package/build/revamp/domain/mappers/schema/types.js +1 -0
  160. package/build/revamp/domain/mappers/schema/utils/getPersistAsyncInitialState.js +35 -0
  161. package/build/revamp/domain/mappers/schema/utils/getValidationAsyncInitialState.js +25 -0
  162. package/build/revamp/domain/mappers/schema/utils/mapCommonSchemaProps.js +28 -0
  163. package/build/revamp/domain/mappers/utils/getAutocompleteString.js +76 -0
  164. package/build/revamp/domain/mappers/utils/getAutocompleteString.spec.js +21 -0
  165. package/build/revamp/domain/mappers/utils/getRandomId.js +2 -0
  166. package/build/revamp/domain/mappers/utils/legacy-utils.js +53 -0
  167. package/build/revamp/flow/executeRefresh.js +97 -0
  168. package/build/revamp/flow/executeSubmission.js +152 -0
  169. package/build/revamp/flow/getResponseType.js +76 -0
  170. package/build/revamp/flow/response-utils.js +1 -1
  171. package/build/revamp/renderers/getRenderFunction.js +55 -0
  172. package/build/revamp/renderers/getSchemaErrorMessageFunction.js +90 -0
  173. package/build/revamp/renderers/mappers/alertComponentToProps.js +4 -0
  174. package/build/revamp/renderers/mappers/allOfComponentToProps.js +11 -0
  175. package/build/revamp/renderers/mappers/booleanInputComponentToProps.js +16 -0
  176. package/build/revamp/renderers/mappers/boxComponentToProps.js +4 -0
  177. package/build/revamp/renderers/mappers/buttonComponentToProps.js +14 -0
  178. package/build/revamp/renderers/mappers/columnsComponentToProps.js +4 -0
  179. package/build/revamp/renderers/mappers/componentToRendererProps.js +105 -0
  180. package/build/revamp/renderers/mappers/containerComponentToProps.js +4 -0
  181. package/build/revamp/renderers/mappers/dateInputComponentToProps.js +13 -0
  182. package/build/revamp/renderers/mappers/decisionComponentToProps.js +4 -0
  183. package/build/revamp/renderers/mappers/dividerComponentToProps.js +4 -0
  184. package/build/revamp/renderers/mappers/formComponentToProps.js +4 -0
  185. package/build/revamp/renderers/mappers/headingComponentToProps.js +11 -0
  186. package/build/revamp/renderers/mappers/hiddenComponentToProps.js +3 -0
  187. package/build/revamp/renderers/mappers/imageComponentToProps.js +11 -0
  188. package/build/revamp/renderers/mappers/instructionsComponentToProps.js +10 -0
  189. package/build/revamp/renderers/mappers/integerInputComponentToProps.js +13 -0
  190. package/build/revamp/renderers/mappers/loadingIndicatorComponentToProps.js +9 -0
  191. package/build/revamp/renderers/mappers/markdownComponentToProps.js +10 -0
  192. package/build/revamp/renderers/mappers/modalComponentToProps.js +10 -0
  193. package/build/revamp/renderers/mappers/multiUploadInputComponentToProps.js +24 -0
  194. package/build/revamp/renderers/mappers/numberInputComponentToProps.js +13 -0
  195. package/build/revamp/renderers/mappers/objectComponentToProps.js +11 -0
  196. package/build/revamp/renderers/mappers/paragraphComponentToProps.js +10 -0
  197. package/build/revamp/renderers/mappers/repeatableComponentToProps.js +40 -0
  198. package/build/revamp/renderers/mappers/reviewComponentToProps.js +11 -0
  199. package/build/revamp/renderers/mappers/searchComponentToProps.js +49 -0
  200. package/build/revamp/renderers/mappers/selectInputComponentToProps.js +29 -0
  201. package/build/revamp/renderers/mappers/statusListComponentToProps.js +10 -0
  202. package/build/revamp/renderers/mappers/textInputComponentToProps.js +13 -0
  203. package/build/revamp/renderers/mappers/uploadInputComponentToProps.js +16 -0
  204. package/build/revamp/renderers/mappers/utils/inputComponentToProps.js +27 -0
  205. package/build/revamp/renderers/step/ExternalConfirmationDialog.js +31 -0
  206. package/build/revamp/renderers/step/StepRenderer.js +29 -0
  207. package/build/revamp/renderers/step/useExternal.js +15 -0
  208. package/build/revamp/renderers/stepComponentToProps.js +9 -0
  209. package/build/revamp/stories/dev-tools/DynamicFlowRevamp.story.js +304 -0
  210. package/build/revamp/stories/dev-tools/EditableStep.story.js +71 -0
  211. package/build/revamp/stories/dev-tools/ErrorHandling.story.js +149 -0
  212. package/build/revamp/stories/dev-tools/External.story.js +83 -0
  213. package/build/revamp/stories/dev-tools/OneOf.Inititalisation.story.js +123 -0
  214. package/build/revamp/stories/dev-tools/PersistAsync.story.js +168 -0
  215. package/build/revamp/stories/dev-tools/RefreshOnChange.story.js +309 -0
  216. package/build/revamp/stories/dev-tools/RefreshOnChange.with.PersistAsync.story.js +1004 -0
  217. package/build/revamp/stories/dev-tools/ServerTest.story.js +81 -0
  218. package/build/revamp/stories/dev-tools/Upload.story.js +221 -0
  219. package/build/revamp/stories/dev-tools/ValidationAsync.story.js +161 -0
  220. package/build/revamp/stories/examples/ObjectConst.story.js +153 -0
  221. package/build/revamp/stories/examples/OneOfInitialisation.story.js +102 -0
  222. package/build/revamp/stories/utils/fixtureHttpClient.js +130 -0
  223. package/build/revamp/stories/utils/mockSearchHandler.js +125 -0
  224. package/build/revamp/stories/visual-tests/VisualTests.story.js +111 -0
  225. package/build/revamp/test-utils/component-utils.js +19 -0
  226. package/build/revamp/test-utils/step-utils.js +6 -0
  227. package/build/revamp/tests/ImageRenderer.spec.js +108 -0
  228. package/build/revamp/tests/InitialAction.spec.js +281 -0
  229. package/build/revamp/tests/InitialStep.spec.js +104 -0
  230. package/build/revamp/tests/Logging.spec.js +112 -0
  231. package/build/revamp/tests/OneOfInitialisation.spec.js +654 -0
  232. package/build/revamp/tests/RefreshOnChange.ResponseHandling.spec.js +322 -0
  233. package/build/revamp/tests/RefreshOnChange.with.Tabs.spec.js +390 -0
  234. package/build/revamp/tests/RefreshOnChangePreserve.spec.js +218 -0
  235. package/build/revamp/tests/Submission.ResponseHandling.spec.js +697 -0
  236. package/build/revamp/tests/Submission.spec.js +399 -0
  237. package/build/revamp/tests/legacy/HiddenSchemas.spec.js +312 -0
  238. package/build/revamp/tests/legacy/MultipleFileUploadSchema.spec.js +447 -0
  239. package/build/revamp/tests/legacy/PersistAsync.blob-schema.spec.js +339 -0
  240. package/build/revamp/tests/legacy/PersistAsync.string-schema.spec.js +385 -0
  241. package/build/revamp/tests/legacy/RefreshStepOnChange.debouncing.spec.js +235 -0
  242. package/build/revamp/tests/legacy/RefreshStepOnChange.spec.js +623 -0
  243. package/build/revamp/tests/legacy/ValidationAsync.spec.js +452 -0
  244. package/build/revamp/tests/legacy/useExternal.spec.js +235 -0
  245. package/build/revamp/utils/component-utils.spec.js +385 -0
  246. package/build/revamp/utils/findComponent.js +29 -0
  247. package/build/revamp/utils/findComponent.spec.js +92 -0
  248. package/build/revamp/utils/type-validators.spec.js +163 -0
  249. package/build/revamp/utils/useStableCallback.js +21 -0
  250. package/build/revamp/wise/renderers/DateInputRenderer.js +35 -0
  251. package/build/revamp/wise/renderers/DecisionRenderer.js +29 -0
  252. package/build/revamp/wise/renderers/DividerRenderer.js +10 -0
  253. package/build/revamp/wise/renderers/FormRenderer.js +21 -0
  254. package/build/revamp/wise/renderers/FormSectionRenderer.js +16 -0
  255. package/build/revamp/wise/renderers/HeadingRenderer.js +57 -0
  256. package/build/revamp/wise/renderers/ImageRenderer.js +111 -0
  257. package/build/revamp/wise/renderers/InstructionsRenderer.js +34 -0
  258. package/build/revamp/wise/renderers/IntegerInputRenderer.js +38 -0
  259. package/build/revamp/wise/renderers/LoadingIndicatorRenderer.js +11 -0
  260. package/build/revamp/wise/renderers/MarkdownRenderer.js +22 -0
  261. package/build/revamp/wise/renderers/ModalRenderer.js +25 -0
  262. package/build/revamp/wise/renderers/MultiUploadInputRenderer.js +74 -0
  263. package/build/revamp/wise/renderers/NumberInputRenderer.js +38 -0
  264. package/build/revamp/wise/renderers/ParagraphRenderer.js +44 -0
  265. package/build/revamp/wise/renderers/RepeatableRenderer.js +58 -0
  266. package/build/revamp/wise/renderers/ReviewRenderer.js +46 -0
  267. package/build/revamp/wise/renderers/SearchRenderer.js +63 -0
  268. package/build/revamp/wise/renderers/SelectInputRenderer/OptionMedia.js +27 -0
  269. package/build/revamp/wise/renderers/SelectInputRenderer/RadioInputRendererComponent.js +25 -0
  270. package/build/revamp/wise/renderers/SelectInputRenderer/SelectInputRenderer.js +30 -0
  271. package/build/revamp/wise/renderers/SelectInputRenderer/SelectInputRendererComponent.js +56 -0
  272. package/build/revamp/wise/renderers/SelectInputRenderer/SelectTriggerMedia.js +27 -0
  273. package/build/revamp/wise/renderers/SelectInputRenderer/TabInputRendererComponent.js +33 -0
  274. package/build/revamp/wise/renderers/StatusListRenderer.js +32 -0
  275. package/build/revamp/wise/renderers/TextInputRenderer.js +35 -0
  276. package/build/revamp/wise/renderers/UploadInputRenderer.js +136 -0
  277. package/build/revamp/wise/renderers/components/UploadFieldInput.js +25 -0
  278. package/build/revamp/wise/renderers/components/VariableDateInput.js +30 -0
  279. package/build/revamp/wise/renderers/components/VariableTextInput.js +69 -0
  280. package/build/revamp/wise/renderers/components/icon/DynamicIcon.js +17 -0
  281. package/build/revamp/wise/renderers/components/icon/FlagIcon.js +198 -0
  282. package/build/revamp/wise/renderers/components/icon/NamedIcon.js +19 -0
  283. package/build/revamp/wise/renderers/components/icon/NavigationOptionMedia.js +31 -0
  284. package/build/revamp/wise/renderers/getWiseRenderers.js +57 -0
  285. package/build/revamp/wise/renderers/hooks/useSnackBarIfAvailable.js +6 -0
  286. package/build/revamp/wise/renderers/utils/file-utils.js +70 -0
  287. package/build/revamp/wise/renderers/utils/getRandomId.js +2 -0
  288. package/build/revamp/wise/renderers/utils/input-utils.js +6 -0
  289. package/build/revamp/wise/renderers/utils/value-utils.js +23 -0
  290. package/build/revamp/wise/renderers/utils/value-utils.spec.js +33 -0
  291. package/build/revamp/wise/renderers/validators/type-validators.js +15 -0
  292. package/build/test-utils/NeptuneProviders.js +23 -0
  293. package/build/test-utils/fetch-utils.js +104 -0
  294. package/build/test-utils/index.js +2 -0
  295. package/build/test-utils/rtl-utils.js +20 -0
  296. package/package.json +3 -2
@@ -0,0 +1,563 @@
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 { jsx as _jsx } from "react/jsx-runtime";
49
+ import { screen, fireEvent, waitFor } from '@testing-library/react';
50
+ import { renderWithProviders } from '../test-utils';
51
+ import JsonSchemaForm from './JsonSchemaForm';
52
+ describe('E2E: Given a component for rendering a JSON schema form', function () {
53
+ var schema;
54
+ var errors;
55
+ var onChange;
56
+ var onPersistAsync;
57
+ var props;
58
+ var baseUrl = 'some-test-base-url';
59
+ var stringSchema = {
60
+ title: 'String',
61
+ type: 'string',
62
+ minLength: 2
63
+ };
64
+ var constSchema = {
65
+ "const": 'abcd'
66
+ };
67
+ var oneOfTwoConstsSchema = {
68
+ title: 'One Of Two Consts',
69
+ control: 'radio',
70
+ oneOf: [
71
+ { "const": 1, title: 'One' },
72
+ { "const": 2, title: 'Two' },
73
+ ]
74
+ };
75
+ var oneOfThreeConstsSchema = {
76
+ title: 'One Of Three Consts',
77
+ oneOf: [
78
+ { "const": 1, title: 'One' },
79
+ { "const": 2, title: 'Two' },
80
+ { "const": 3, title: 'Three' },
81
+ ]
82
+ };
83
+ var booleanSchema = {
84
+ title: 'Check',
85
+ type: 'boolean'
86
+ };
87
+ var numberSchema = {
88
+ title: 'Number',
89
+ type: 'number'
90
+ };
91
+ beforeEach(function () {
92
+ schema = {
93
+ allOf: [
94
+ {
95
+ oneOf: [
96
+ {
97
+ title: 'Title',
98
+ type: 'object',
99
+ properties: {
100
+ string: stringSchema,
101
+ "const": constSchema,
102
+ oneOf2Consts: oneOfTwoConstsSchema,
103
+ boolean: booleanSchema,
104
+ number: numberSchema,
105
+ oneOf3Consts: oneOfThreeConstsSchema
106
+ },
107
+ displayOrder: [
108
+ 'string',
109
+ 'const',
110
+ 'oneOf2Consts',
111
+ 'boolean',
112
+ 'number',
113
+ 'oneOf3Consts',
114
+ ]
115
+ },
116
+ ]
117
+ },
118
+ ]
119
+ };
120
+ onChange = jest.fn();
121
+ onPersistAsync = jest.fn();
122
+ errors = {
123
+ string: 'Error'
124
+ };
125
+ var model = { string: 'foo' };
126
+ var submitted = false;
127
+ var disabled = false;
128
+ props = {
129
+ schema: schema,
130
+ model: model,
131
+ errors: errors,
132
+ onChange: onChange,
133
+ submitted: submitted,
134
+ disabled: disabled,
135
+ onPersistAsync: onPersistAsync,
136
+ baseUrl: baseUrl
137
+ };
138
+ });
139
+ describe('when initialised', function () {
140
+ beforeEach(function () {
141
+ renderWithProviders(_jsx(JsonSchemaForm, __assign({}, props)));
142
+ });
143
+ it('should render text input control', function () {
144
+ var string = screen.getByLabelText('String');
145
+ expect(string.closest('input')).toHaveAttribute('type', 'text');
146
+ });
147
+ it('should render number input control', function () {
148
+ var number = screen.getByLabelText('Number');
149
+ expect(number.closest('input')).toHaveAttribute('type', 'number');
150
+ });
151
+ it('should render a checkbox for the boolean schema', function () {
152
+ var check = screen.getByLabelText('Check');
153
+ expect(check.parentElement).toHaveClass('np-checkbox-button');
154
+ });
155
+ it('should render radio buttons for the One Of Two Consts schema', function () {
156
+ expect(screen.getByText('One Of Two Consts')).toBeInTheDocument();
157
+ expect(screen.getAllByRole('radio')).toHaveLength(2);
158
+ });
159
+ it('should render a select for the One Of Three Consts schema', function () {
160
+ expect(screen.getByRole('button')).toBeInTheDocument();
161
+ });
162
+ it('should render the model value in the relevant control', function () {
163
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion
164
+ expect(screen.getByLabelText('String').value).toBe('foo');
165
+ });
166
+ it('should render an error', function () {
167
+ expect(screen.getByRole('alert')).toHaveTextContent(/error/i);
168
+ });
169
+ it('should broadcast a change for the const and a change for the boolean schema', function () {
170
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
171
+ model: { string: 'foo', "const": 'abcd' },
172
+ triggerSchema: constSchema,
173
+ triggerModel: 'abcd',
174
+ lastTriggerModel: null
175
+ }));
176
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
177
+ model: { string: 'foo', "const": 'abcd', boolean: false },
178
+ triggerSchema: booleanSchema,
179
+ triggerModel: false,
180
+ lastTriggerModel: null
181
+ }));
182
+ expect(onChange).toHaveBeenCalledTimes(2);
183
+ });
184
+ });
185
+ describe('when the text input value changes', function () {
186
+ beforeEach(function () {
187
+ renderWithProviders(_jsx(JsonSchemaForm, __assign({}, props)));
188
+ fireEvent.change(screen.getByLabelText('String'), { target: { value: 'new' } });
189
+ });
190
+ it('should trigger the component onChange', function () {
191
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
192
+ model: { string: 'new', "const": 'abcd', boolean: false },
193
+ triggerSchema: stringSchema,
194
+ triggerModel: 'new',
195
+ lastTriggerModel: 'foo'
196
+ }));
197
+ expect(onChange).toHaveBeenCalledTimes(3);
198
+ });
199
+ });
200
+ describe('when the text input value changes to something invalid', function () {
201
+ beforeEach(function () {
202
+ renderWithProviders(_jsx(JsonSchemaForm, __assign({}, props)));
203
+ fireEvent.change(screen.getByLabelText('String'), { target: { value: 'x' } });
204
+ });
205
+ it('should NOT remove the value from the model', function () {
206
+ expect(onChange).toHaveBeenLastCalledWith(expect.objectContaining({
207
+ model: { "const": 'abcd', string: 'x', boolean: false },
208
+ triggerSchema: stringSchema,
209
+ triggerModel: 'x',
210
+ lastTriggerModel: 'foo'
211
+ }));
212
+ });
213
+ describe('and then to something else invalid', function () {
214
+ beforeEach(function () {
215
+ fireEvent.change(screen.getByLabelText('String'), { target: { value: 'y' } });
216
+ });
217
+ it('should call onChange again', function () {
218
+ expect(onChange).toHaveBeenCalledTimes(4);
219
+ });
220
+ });
221
+ describe('and then to something valid', function () {
222
+ beforeEach(function () {
223
+ fireEvent.change(screen.getByLabelText('String'), { target: { value: 'bar' } });
224
+ });
225
+ it('should call onChange with the new value', function () {
226
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({
227
+ model: { string: 'bar', "const": 'abcd', boolean: false },
228
+ triggerSchema: stringSchema,
229
+ triggerModel: 'bar',
230
+ lastTriggerModel: 'x'
231
+ }));
232
+ });
233
+ it('should have called onChange again', function () {
234
+ expect(onChange).toHaveBeenCalledTimes(4);
235
+ });
236
+ });
237
+ });
238
+ describe('when disabled', function () {
239
+ it('should disable the controls', function () {
240
+ renderWithProviders(_jsx(JsonSchemaForm, __assign({}, props, { disabled: true })));
241
+ var controls = ['textbox', 'radio', 'spinbutton'];
242
+ controls.forEach(function (control) {
243
+ screen.getAllByRole(control).forEach(function (node) {
244
+ expect(node).toBeDisabled();
245
+ });
246
+ });
247
+ var dropdowns = screen
248
+ .getAllByRole('button')
249
+ .filter(function (node) { var _a; return (_a = node.getAttribute('class')) === null || _a === void 0 ? void 0 : _a.split(' ').includes('np-dropdown-toggle'); });
250
+ dropdowns.forEach(function (node) {
251
+ expect(node).toBeDisabled();
252
+ });
253
+ });
254
+ });
255
+ describe('when a property becomes required after initialisation, and the form is submitted', function () {
256
+ var rerender;
257
+ var optionalSchema = {
258
+ type: 'object',
259
+ title: 'Option A',
260
+ properties: {
261
+ a: {
262
+ title: 'A Number',
263
+ type: 'number'
264
+ }
265
+ },
266
+ displayOrder: ['a']
267
+ };
268
+ var requiredSchema = __assign(__assign({}, optionalSchema), { required: ['a'] });
269
+ beforeEach(function () {
270
+ props = __assign(__assign({}, props), { schema: optionalSchema });
271
+ rerender = renderWithProviders(_jsx(JsonSchemaForm, __assign({}, props))).rerender;
272
+ });
273
+ it('should display validation errors', function () {
274
+ rerender(_jsx(JsonSchemaForm, __assign({}, props, { schema: requiredSchema, submitted: true })));
275
+ expect(screen.getByText('Please fill out this field.')).toBeInTheDocument();
276
+ });
277
+ });
278
+ describe('when initialising it with a schema containing a oneOf with two options', function () {
279
+ var makeSchemaWithOneOfTwoOptions = function (control, options) {
280
+ if (options === void 0) { options = {}; }
281
+ return ({
282
+ analyticsId: 'schema-with-two-options',
283
+ title: 'Recipient Bank Details',
284
+ placeholder: 'Please, choose an option.',
285
+ oneOf: [
286
+ {
287
+ analyticsId: 'SortCode',
288
+ title: 'Sort Code Tab',
289
+ type: 'object',
290
+ required: options.everythingRequired ? ['name', 'sortcode', 'account'] : [],
291
+ properties: {
292
+ name: {
293
+ title: 'Full name field',
294
+ type: 'string'
295
+ },
296
+ sortcode: {
297
+ title: 'Sort Code field',
298
+ type: 'string'
299
+ },
300
+ account: {
301
+ title: 'Account number field',
302
+ type: 'string'
303
+ },
304
+ type: {
305
+ type: 'string',
306
+ "const": 'SortCode'
307
+ }
308
+ },
309
+ displayOrder: ['name', 'sortcode', 'account', 'type']
310
+ },
311
+ {
312
+ analyticsId: 'Iban',
313
+ title: 'IBAN Tab',
314
+ type: 'object',
315
+ required: options.everythingRequired ? ['name', 'iban'] : [],
316
+ properties: {
317
+ name: {
318
+ title: 'Full name field',
319
+ type: 'string'
320
+ },
321
+ iban: {
322
+ title: 'IBAN field',
323
+ type: 'string'
324
+ },
325
+ type: {
326
+ type: 'string',
327
+ "const": 'Iban'
328
+ }
329
+ }
330
+ },
331
+ ],
332
+ control: control
333
+ });
334
+ };
335
+ var renderComponent = function (props) {
336
+ var schema = props.schema, _a = props.onChange, onChange = _a === void 0 ? jest.fn() : _a, _b = props.initialModel, initialModel = _b === void 0 ? {} : _b, _c = props.onEvent, onEvent = _c === void 0 ? jest.fn() : _c, _d = props.submitted, submitted = _d === void 0 ? false : _d;
337
+ function JsonSchemaFormWithModelState() {
338
+ return (_jsx(JsonSchemaForm, { schema: schema, model: initialModel, errors: {}, submitted: submitted, baseUrl: "", onChange: onChange, onPersistAsync: jest.fn(), onEvent: onEvent }));
339
+ }
340
+ renderWithProviders(_jsx(JsonSchemaFormWithModelState, {}));
341
+ };
342
+ ['tab', 'radio', 'select'].forEach(function (control) {
343
+ describe("when using a \"".concat(control, "\" control type"), function () {
344
+ it("dispatches onChange immediately with the model corresponding to the selected oneOf", function () {
345
+ //
346
+ jest.useFakeTimers();
347
+ var onChange = jest.fn();
348
+ var schema = makeSchemaWithOneOfTwoOptions(control);
349
+ var initialModel = {
350
+ name: 'Bob Loblaw',
351
+ sortcode: '111111',
352
+ account: '22222222',
353
+ iban: 'IT0000000000'
354
+ };
355
+ renderComponent({ schema: schema, onChange: onChange, initialModel: initialModel });
356
+ expect(onChange).toHaveBeenLastCalledWith(expect.objectContaining({
357
+ model: {
358
+ type: 'SortCode',
359
+ name: 'Bob Loblaw',
360
+ sortcode: '111111',
361
+ account: '22222222'
362
+ }
363
+ }));
364
+ jest.useRealTimers();
365
+ });
366
+ });
367
+ });
368
+ describe('and switching schemas in the oneOf', function () {
369
+ it('triggers onEvent with the "Dynamic Flow - OneOf Selected" event name and the expected oneOfId and schemaId properties', function () {
370
+ //
371
+ jest.useFakeTimers();
372
+ var onEvent = jest.fn();
373
+ var schema = makeSchemaWithOneOfTwoOptions('radio');
374
+ var initialModel = {};
375
+ renderComponent({ schema: schema, onEvent: onEvent, initialModel: initialModel });
376
+ // switch to the other schema (IBAN Tab)
377
+ fireEvent.click(screen.getByText(/iban tab/i));
378
+ expect(onEvent).toHaveBeenLastCalledWith('Dynamic Flow - OneOf Selected', expect.objectContaining({
379
+ oneOfId: 'schema-with-two-options',
380
+ schemaId: 'Iban'
381
+ }));
382
+ onEvent.mockClear();
383
+ // enter name, sortcode and account number
384
+ fireEvent.change(screen.getByLabelText(/full name field/i), {
385
+ target: { value: 'Robert Sortcode' }
386
+ });
387
+ expect(onEvent).not.toHaveBeenCalled();
388
+ });
389
+ });
390
+ describe('and switching between the two non-const schemas in the oneOf', function () {
391
+ it('keeps separate models for each schema in the oneOf', function () {
392
+ jest.useFakeTimers();
393
+ var onChange = jest.fn();
394
+ var schema = makeSchemaWithOneOfTwoOptions('tab');
395
+ var initialModel = {};
396
+ renderComponent({ schema: schema, onChange: onChange, initialModel: initialModel });
397
+ // enter name, sortcode and account number
398
+ fireEvent.change(screen.getByLabelText(/full name field/i), {
399
+ target: { value: 'Robert Sortcode' }
400
+ });
401
+ fireEvent.change(screen.getByLabelText(/sort code field/i), {
402
+ target: { value: '111111' }
403
+ });
404
+ fireEvent.change(screen.getByLabelText(/account number field/i), {
405
+ target: { value: '22222222' }
406
+ });
407
+ // expect the values to be visible, of course
408
+ expect(screen.getByDisplayValue('Robert Sortcode')).toBeInTheDocument();
409
+ expect(screen.getByDisplayValue('111111')).toBeInTheDocument();
410
+ expect(screen.getByDisplayValue('22222222')).toBeInTheDocument();
411
+ // also expect the model to have been updated to the expected value
412
+ expect(onChange).toHaveBeenLastCalledWith(expect.objectContaining({
413
+ model: {
414
+ type: 'SortCode',
415
+ name: 'Robert Sortcode',
416
+ sortcode: '111111',
417
+ account: '22222222'
418
+ }
419
+ }));
420
+ // switch to the other schema (IBAN Tab)
421
+ fireEvent.click(screen.getByText(/iban tab/i));
422
+ // expect the values entered on the other schema to not be visible here
423
+ expect(screen.queryByDisplayValue('Robert Sortcode')).not.toBeInTheDocument();
424
+ expect(screen.queryByDisplayValue('111111')).not.toBeInTheDocument();
425
+ expect(screen.queryByDisplayValue('22222222')).not.toBeInTheDocument();
426
+ // also expect the model to be updated to the selected type: 'Iban'
427
+ expect(onChange).toHaveBeenLastCalledWith(expect.objectContaining({ model: { type: 'Iban' } }));
428
+ // now enter a different name and an IBAN
429
+ fireEvent.change(screen.getByLabelText(/full name field/i), {
430
+ target: { value: 'Bob Iban' }
431
+ });
432
+ fireEvent.change(screen.getByLabelText(/iban field/i), {
433
+ target: { value: 'IT000000000' }
434
+ });
435
+ // expect the model to be updated accordingly
436
+ expect(onChange).toHaveBeenLastCalledWith(expect.objectContaining({
437
+ model: {
438
+ type: 'Iban',
439
+ name: 'Bob Iban',
440
+ iban: 'IT000000000'
441
+ }
442
+ }));
443
+ // now switch back to the first tab (Sort Code Tab)
444
+ fireEvent.click(screen.getByText(/sort code tab/i));
445
+ // expect the values initially entered in this tab to be visible again
446
+ expect(screen.getByDisplayValue('111111')).toBeInTheDocument();
447
+ expect(screen.getByDisplayValue('22222222')).toBeInTheDocument();
448
+ expect(screen.getByDisplayValue('Robert Sortcode')).toBeInTheDocument();
449
+ // also expect the model to be updated accordingly
450
+ expect(onChange).toHaveBeenLastCalledWith(expect.objectContaining({
451
+ model: {
452
+ type: 'SortCode',
453
+ name: 'Robert Sortcode',
454
+ sortcode: '111111',
455
+ account: '22222222'
456
+ }
457
+ }));
458
+ jest.useRealTimers();
459
+ });
460
+ });
461
+ describe('when the property containing a oneOf is required', function () {
462
+ var schema = {
463
+ type: 'object',
464
+ displayOrder: ['theOnlyProp'],
465
+ required: ['theOnlyProp'],
466
+ properties: {
467
+ theOnlyProp: __assign(__assign({}, makeSchemaWithOneOfTwoOptions('select', { everythingRequired: true })), { validationMessages: { required: 'Custom required validation error' } })
468
+ }
469
+ };
470
+ describe('...but none of the oneOf is selected', function () {
471
+ it('should display the "required" validation error under the Select control', function () {
472
+ renderComponent({ schema: schema, initialModel: {}, submitted: true });
473
+ expect(screen.getByText(/please, choose/i)).toBeInTheDocument();
474
+ expect(screen.getByText('Custom required validation error')).toBeInTheDocument();
475
+ expect(screen.queryByText('Please fill out this field.')).not.toBeInTheDocument();
476
+ });
477
+ it('...only until one of the options is selected', function () { return __awaiter(void 0, void 0, void 0, function () {
478
+ return __generator(this, function (_a) {
479
+ switch (_a.label) {
480
+ case 0:
481
+ renderComponent({ schema: schema, initialModel: {}, submitted: true });
482
+ expect(screen.getByText(/please, choose/i)).toBeInTheDocument();
483
+ expect(screen.getByText('Custom required validation error')).toBeInTheDocument();
484
+ expect(screen.queryByText('Please fill out this field.')).not.toBeInTheDocument();
485
+ fireEvent.click(screen.getByText(/please, choose an option/i));
486
+ fireEvent.click(screen.getByText(/iban/i));
487
+ return [4 /*yield*/, waitFor(function () {
488
+ expect(screen.queryByText(/please, choose an option/i)).not.toBeInTheDocument();
489
+ })];
490
+ case 1:
491
+ _a.sent();
492
+ expect(screen.queryByText('Custom required validation error')).not.toBeInTheDocument();
493
+ expect(screen.getAllByText('Please fill out this field.')).toHaveLength(2);
494
+ return [2 /*return*/];
495
+ }
496
+ });
497
+ }); });
498
+ it('...and if the oneOf is unselected, the validation message is back', function () { return __awaiter(void 0, void 0, void 0, function () {
499
+ return __generator(this, function (_a) {
500
+ switch (_a.label) {
501
+ case 0:
502
+ renderComponent({ schema: schema, initialModel: {}, submitted: true });
503
+ expect(screen.getByText(/please, choose/i)).toBeInTheDocument();
504
+ expect(screen.getByText('Custom required validation error')).toBeInTheDocument();
505
+ expect(screen.queryByText('Please fill out this field.')).not.toBeInTheDocument();
506
+ fireEvent.click(screen.getByText(/please, choose an option/i));
507
+ fireEvent.click(screen.getByText(/iban tab/i));
508
+ return [4 /*yield*/, waitFor(function () {
509
+ expect(screen.queryByText(/please, choose an option/i)).not.toBeInTheDocument();
510
+ })];
511
+ case 1:
512
+ _a.sent();
513
+ expect(screen.queryByText('Custom required validation error')).not.toBeInTheDocument();
514
+ expect(screen.getAllByText('Please fill out this field.')).toHaveLength(2);
515
+ fireEvent.click(screen.getByLabelText(/clear/i));
516
+ expect(screen.getByText(/please, choose an option/i)).toBeInTheDocument();
517
+ fireEvent.click(screen.getByText(/please, choose an option/i));
518
+ return [4 /*yield*/, waitFor(function () {
519
+ expect(screen.getByText('Custom required validation error')).toBeInTheDocument();
520
+ })];
521
+ case 2:
522
+ _a.sent();
523
+ return [2 /*return*/];
524
+ }
525
+ });
526
+ }); });
527
+ });
528
+ });
529
+ });
530
+ describe('when initialised with an allOf with two schemas', function () {
531
+ var schema = {
532
+ allOf: [
533
+ {
534
+ type: 'object',
535
+ displayOrder: ['a'],
536
+ properties: {
537
+ a: { type: 'string', title: 'Label A' }
538
+ }
539
+ },
540
+ {
541
+ type: 'object',
542
+ displayOrder: ['b'],
543
+ properties: {
544
+ b: { type: 'string', title: 'Label B' }
545
+ }
546
+ },
547
+ ]
548
+ };
549
+ describe('when updating more than one schema', function () {
550
+ it('calls onChange with all changed models in all schemas', function () {
551
+ var onChange = jest.fn();
552
+ renderWithProviders(_jsx(JsonSchemaForm, __assign({}, props, { schema: schema, onChange: onChange })));
553
+ fireEvent.change(screen.getByLabelText(/Label A/), { target: { value: 'AAA' } });
554
+ expect(onChange).toHaveBeenCalledTimes(1);
555
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ model: { a: 'AAA' } }));
556
+ onChange.mockClear();
557
+ fireEvent.change(screen.getByLabelText(/Label B/), { target: { value: 'BBB' } });
558
+ expect(onChange).toHaveBeenCalledTimes(1);
559
+ expect(onChange).toHaveBeenCalledWith(expect.objectContaining({ model: { a: 'AAA', b: 'BBB' } }));
560
+ });
561
+ });
562
+ });
563
+ });
@@ -0,0 +1 @@
1
+ export { default } from './ArrayListSchema';