@wise/dynamic-flow-client 5.9.0 → 5.9.2-logging-bf0bd22

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 (413) hide show
  1. package/build/main.js +41 -44
  2. package/build/main.mjs +41 -44
  3. package/build/types/domain/components/step/StepDomainComponent.d.ts +2 -1
  4. package/build/types/domain/components/step/StepDomainComponent.d.ts.map +1 -1
  5. package/build/types/domain/mappers/mapStepSchemas.d.ts +1 -1
  6. package/build/types/domain/mappers/mapStepSchemas.d.ts.map +1 -1
  7. package/build/types/domain/mappers/mapStepToComponent.d.ts.map +1 -1
  8. package/build/types/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.d.ts +1 -531
  9. package/build/types/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.d.ts.map +1 -1
  10. package/build/types/domain/mappers/schema/persistAsyncSchemaToComponent.d.ts +0 -16
  11. package/build/types/domain/mappers/schema/persistAsyncSchemaToComponent.d.ts.map +1 -1
  12. package/build/types/domain/types.d.ts +0 -1
  13. package/build/types/domain/types.d.ts.map +1 -1
  14. package/build/types/renderers/mappers/selectInputComponentToProps.d.ts +2 -2
  15. package/build/types/renderers/mappers/selectInputComponentToProps.d.ts.map +1 -1
  16. package/package.json +20 -19
  17. package/build/DynamicFlowCore.js +0 -5
  18. package/build/common/errorBoundary/ErrorBoundary.js +0 -26
  19. package/build/common/errorBoundary/ErrorBoundary.test.js +0 -29
  20. package/build/common/errorBoundary/ErrorBoundaryAlert.js +0 -11
  21. package/build/common/makeHttpClient/api-utils.js +0 -3
  22. package/build/common/makeHttpClient/index.js +0 -1
  23. package/build/common/makeHttpClient/makeHttpClient.js +0 -10
  24. package/build/common/makeHttpClient/makeHttpClient.test.js +0 -186
  25. package/build/common/messages/external-confirmation.messages.js +0 -23
  26. package/build/common/messages/file-upload.messages.js +0 -13
  27. package/build/common/messages/generic-error.messages.js +0 -18
  28. package/build/common/messages/help.messages.js +0 -8
  29. package/build/common/messages/multi-file-upload.messages.js +0 -18
  30. package/build/common/messages/multi-select.messages.js +0 -8
  31. package/build/common/messages/paragraph.messages.js +0 -13
  32. package/build/common/messages/repeatable.messages.js +0 -23
  33. package/build/common/messages/search.messages.js +0 -8
  34. package/build/common/messages/validation.array.messages.js +0 -13
  35. package/build/common/messages/validation.messages.js +0 -53
  36. package/build/controller/FlowController.js +0 -368
  37. package/build/controller/executePoll.js +0 -49
  38. package/build/controller/executeRefresh.js +0 -39
  39. package/build/controller/executeRequest.js +0 -77
  40. package/build/controller/executeSubmission.js +0 -69
  41. package/build/controller/getErrorMessage.js +0 -7
  42. package/build/controller/getRequestAbortController.js +0 -13
  43. package/build/controller/getResponseType.js +0 -35
  44. package/build/controller/getSafeHttpClient.js +0 -8
  45. package/build/controller/getStepCounter.js +0 -16
  46. package/build/controller/handleErrorResponse.js +0 -26
  47. package/build/controller/makeSafeHttpClient.js +0 -8
  48. package/build/controller/response-utils.js +0 -72
  49. package/build/domain/components/AlertComponent.js +0 -1
  50. package/build/domain/components/AllOfComponent.js +0 -40
  51. package/build/domain/components/BooleanInputComponent.js +0 -50
  52. package/build/domain/components/BoxComponent.js +0 -3
  53. package/build/domain/components/ButtonComponent.js +0 -1
  54. package/build/domain/components/ColumnsComponent.js +0 -3
  55. package/build/domain/components/ConstComponent.js +0 -18
  56. package/build/domain/components/ContainerComponent.js +0 -3
  57. package/build/domain/components/DateInputComponent.js +0 -75
  58. package/build/domain/components/DecisionComponent.js +0 -1
  59. package/build/domain/components/DividerComponent.js +0 -1
  60. package/build/domain/components/FormComponent.js +0 -3
  61. package/build/domain/components/FormattedValueComponent.js +0 -44
  62. package/build/domain/components/HeadingComponent.js +0 -1
  63. package/build/domain/components/ImageComponent.js +0 -1
  64. package/build/domain/components/InstructionsComponent.js +0 -1
  65. package/build/domain/components/IntegerInputComponent.js +0 -74
  66. package/build/domain/components/ListComponent.js +0 -1
  67. package/build/domain/components/LoadingIndicatorComponent.js +0 -1
  68. package/build/domain/components/MarkdownComponent.js +0 -1
  69. package/build/domain/components/MediaComponent.js +0 -1
  70. package/build/domain/components/ModalComponent.js +0 -16
  71. package/build/domain/components/ModalLayoutComponent.js +0 -3
  72. package/build/domain/components/MoneyInputComponent.js +0 -57
  73. package/build/domain/components/MultiSelectInputComponent.js +0 -81
  74. package/build/domain/components/MultiUploadInputComponent.js +0 -88
  75. package/build/domain/components/NumberInputComponent.js +0 -73
  76. package/build/domain/components/ObjectComponent.js +0 -45
  77. package/build/domain/components/ParagraphComponent.js +0 -1
  78. package/build/domain/components/PersistAsyncComponent.js +0 -92
  79. package/build/domain/components/ProgressComponent.js +0 -1
  80. package/build/domain/components/RepeatableComponent.js +0 -103
  81. package/build/domain/components/ReviewComponent.js +0 -1
  82. package/build/domain/components/RootDomainComponent.js +0 -173
  83. package/build/domain/components/SectionComponent.js +0 -5
  84. package/build/domain/components/SelectInputComponent.js +0 -88
  85. package/build/domain/components/StatusListComponent.js +0 -1
  86. package/build/domain/components/SubflowDomainComponent.js +0 -9
  87. package/build/domain/components/TabsComponent.js +0 -1
  88. package/build/domain/components/TextInputComponent.js +0 -76
  89. package/build/domain/components/TupleComponent.js +0 -41
  90. package/build/domain/components/UploadInputComponent.js +0 -83
  91. package/build/domain/components/UpsellComponent.js +0 -25
  92. package/build/domain/components/searchComponent/SearchComponent.js +0 -92
  93. package/build/domain/components/searchComponent/SearchComponent.test.js +0 -190
  94. package/build/domain/components/step/ExternalConfirmationComponent.js +0 -28
  95. package/build/domain/components/step/StepDomainComponent.js +0 -73
  96. package/build/domain/components/step/ToolbarComponent.js +0 -1
  97. package/build/domain/components/utils/WithUpdate.js +0 -1
  98. package/build/domain/components/utils/component-utils.js +0 -12
  99. package/build/domain/components/utils/debounce.js +0 -34
  100. package/build/domain/components/utils/debounce.test.js +0 -67
  101. package/build/domain/components/utils/file-utils.js +0 -21
  102. package/build/domain/components/utils/file-utils.test.js +0 -27
  103. package/build/domain/components/utils/getRandomId.js +0 -1
  104. package/build/domain/components/utils/isExactLocalValueMatch.js +0 -14
  105. package/build/domain/components/utils/isOrWasValid.js +0 -5
  106. package/build/domain/components/utils/isPartialModelMatch.js +0 -18
  107. package/build/domain/components/utils/isPartialModelMatch.test.js +0 -74
  108. package/build/domain/features/eventNames.js +0 -24
  109. package/build/domain/features/events.js +0 -1
  110. package/build/domain/features/persistAsync/getComponentMultiPersistAsync.js +0 -50
  111. package/build/domain/features/persistAsync/getInitialPersistedState.js +0 -7
  112. package/build/domain/features/persistAsync/getPerformPersistAsync.js +0 -43
  113. package/build/domain/features/persistAsync/getPerformPersistAsync.test.js +0 -139
  114. package/build/domain/features/polling/getStepPolling.js +0 -43
  115. package/build/domain/features/polling/getStepPolling.test.js +0 -90
  116. package/build/domain/features/prefetch/getStepPrefetch.js +0 -43
  117. package/build/domain/features/prefetch/request-cache.js +0 -49
  118. package/build/domain/features/prefetch/request-cache.test.js +0 -70
  119. package/build/domain/features/refreshAfter/getStepRefreshAfter.js +0 -24
  120. package/build/domain/features/refreshAfter/getStepRefreshAfter.test.js +0 -40
  121. package/build/domain/features/schema-on-change/getDebouncedSchemaOnChange.js +0 -50
  122. package/build/domain/features/schema-on-change/getSchemaOnChange.js +0 -34
  123. package/build/domain/features/search/getPerformSearchFunction.js +0 -75
  124. package/build/domain/features/search/getPerformSearchFunction.test.js +0 -301
  125. package/build/domain/features/summary/summary-utils.js +0 -40
  126. package/build/domain/features/summary/summary-utils.test.js +0 -125
  127. package/build/domain/features/utils/http-utils.js +0 -21
  128. package/build/domain/features/utils/response-utils.js +0 -9
  129. package/build/domain/features/validation/spec-utils.js +0 -19
  130. package/build/domain/features/validation/validateStringPattern.js +0 -24
  131. package/build/domain/features/validation/validation-functions.js +0 -6
  132. package/build/domain/features/validation/validation-functions.test.js +0 -108
  133. package/build/domain/features/validation/value-checks.js +0 -125
  134. package/build/domain/features/validation/value-checks.test.js +0 -262
  135. package/build/domain/features/validationAsync/getComponentValidationAsync.js +0 -53
  136. package/build/domain/features/validationAsync/getComponentValidationAsync.test.js +0 -67
  137. package/build/domain/features/validationAsync/getInitialValidationAsyncState.js +0 -5
  138. package/build/domain/features/validationAsync/getPerformValidationAsync.js +0 -45
  139. package/build/domain/features/validationAsync/getPerformValidationAsync.test.js +0 -143
  140. package/build/domain/mappers/layout/alertLayoutToComponent.js +0 -16
  141. package/build/domain/mappers/layout/boxLayoutToComponent.js +0 -13
  142. package/build/domain/mappers/layout/buttonLayoutToComponent.js +0 -77
  143. package/build/domain/mappers/layout/columnsLayoutToComponent.js +0 -13
  144. package/build/domain/mappers/layout/decisionLayoutToComponent.js +0 -22
  145. package/build/domain/mappers/layout/deprecatedListLayoutToComponent.js +0 -30
  146. package/build/domain/mappers/layout/dividerLayoutToComponent.js +0 -2
  147. package/build/domain/mappers/layout/formLayoutToComponent.js +0 -19
  148. package/build/domain/mappers/layout/headingLayoutToComponent.js +0 -12
  149. package/build/domain/mappers/layout/imageLayoutToComponent.js +0 -20
  150. package/build/domain/mappers/layout/infoLayoutToComponent.js +0 -12
  151. package/build/domain/mappers/layout/instructionsLayoutToComponent.js +0 -12
  152. package/build/domain/mappers/layout/listLayoutToComponent.js +0 -39
  153. package/build/domain/mappers/layout/loadingIndicatorLayoutToComponent.js +0 -9
  154. package/build/domain/mappers/layout/markdownLayoutToComponent.js +0 -12
  155. package/build/domain/mappers/layout/mediaLayoutToComponent.js +0 -12
  156. package/build/domain/mappers/layout/modalLayoutToComponent.js +0 -17
  157. package/build/domain/mappers/layout/modalToComponent.js +0 -8
  158. package/build/domain/mappers/layout/paragraphLayoutToComponent.js +0 -12
  159. package/build/domain/mappers/layout/progressLayoutToComponent.js +0 -15
  160. package/build/domain/mappers/layout/reviewLayoutToComponent.js +0 -48
  161. package/build/domain/mappers/layout/searchLayoutToComponent.js +0 -44
  162. package/build/domain/mappers/layout/sectionLayoutToComponent.js +0 -15
  163. package/build/domain/mappers/layout/statusListLayoutToComponent.js +0 -15
  164. package/build/domain/mappers/layout/tabsLayoutToComponent.js +0 -16
  165. package/build/domain/mappers/layout/upsellLayoutToComponent.js +0 -25
  166. package/build/domain/mappers/mapLayoutToComponent.js +0 -81
  167. package/build/domain/mappers/mapSchemaToComponent.js +0 -61
  168. package/build/domain/mappers/mapSchemaToComponent.test.js +0 -112
  169. package/build/domain/mappers/mapStepSchemas.js +0 -17
  170. package/build/domain/mappers/mapStepToComponent.js +0 -132
  171. package/build/domain/mappers/mapStepToComponent.test.js +0 -221
  172. package/build/domain/mappers/mapToolbarToComponent.js +0 -15
  173. package/build/domain/mappers/schema/allOfSchemaToComponent.js +0 -16
  174. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToComponent.js +0 -26
  175. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiSelectComponent.js +0 -55
  176. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToMultiUploadComponent.js +0 -67
  177. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToRepeatableComponent.js +0 -57
  178. package/build/domain/mappers/schema/arraySchemaToComponent/arraySchemaToTupleComponent.js +0 -20
  179. package/build/domain/mappers/schema/blobSchemaToComponent.js +0 -15
  180. package/build/domain/mappers/schema/booleanSchemaToComponent.js +0 -29
  181. package/build/domain/mappers/schema/constSchemaToComponent.js +0 -23
  182. package/build/domain/mappers/schema/integerSchemaToComponent.js +0 -28
  183. package/build/domain/mappers/schema/numberSchemaToComponent.js +0 -26
  184. package/build/domain/mappers/schema/objectSchemaToComponent/assertDisplayOrder.js +0 -23
  185. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToFormattedValueComponent.js +0 -9
  186. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.js +0 -119
  187. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToMoneyInputComponent.test.js +0 -96
  188. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.js +0 -31
  189. package/build/domain/mappers/schema/objectSchemaToComponent/objectSchemaToObjectComponent.test.js +0 -99
  190. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.js +0 -76
  191. package/build/domain/mappers/schema/oneOfSchemaToComponent/oneOfSchemaToComponent.test.js +0 -265
  192. package/build/domain/mappers/schema/persistAsyncSchemaToComponent.js +0 -29
  193. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.js +0 -18
  194. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToComponent.test.js +0 -133
  195. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToDateInputComponent.js +0 -48
  196. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToTextInputComponent.js +0 -37
  197. package/build/domain/mappers/schema/stringSchemaToComponent/stringSchemaToUploadInputComponent.js +0 -28
  198. package/build/domain/mappers/schema/tests/test-utils.js +0 -16
  199. package/build/domain/mappers/schema/types.js +0 -1
  200. package/build/domain/mappers/schema/utils/getPerformPersistAsyncFn.js +0 -19
  201. package/build/domain/mappers/schema/utils/getValidationAsyncInitialState.js +0 -23
  202. package/build/domain/mappers/schema/utils/mapCommonSchemaProps.js +0 -16
  203. package/build/domain/mappers/types.js +0 -1
  204. package/build/domain/mappers/utils/FeatureFlags.js +0 -22
  205. package/build/domain/mappers/utils/behavior-utils.js +0 -44
  206. package/build/domain/mappers/utils/call-to-action-utils.js +0 -21
  207. package/build/domain/mappers/utils/getAutocompleteString.js +0 -76
  208. package/build/domain/mappers/utils/getAutocompleteString.test.js +0 -21
  209. package/build/domain/mappers/utils/groupLayoutByPinned.js +0 -38
  210. package/build/domain/mappers/utils/groupLayoutByPinned.test.js +0 -166
  211. package/build/domain/mappers/utils/image.js +0 -9
  212. package/build/domain/mappers/utils/layout-utils.js +0 -11
  213. package/build/domain/mappers/utils/legacy-utils.js +0 -49
  214. package/build/domain/mappers/utils/media-utils.js +0 -14
  215. package/build/domain/mappers/utils/suggestions-utils.js +0 -26
  216. package/build/domain/mappers/utils/suggestions-utils.test.js +0 -36
  217. package/build/domain/mappers/utils/tags-utils.js +0 -1
  218. package/build/domain/mappers/utils/utils.js +0 -35
  219. package/build/domain/types.js +0 -1
  220. package/build/getSubflowCallbacks.js +0 -38
  221. package/build/i18n/index.js +0 -40
  222. package/build/index.js +0 -8
  223. package/build/renderers/CoreContainerRenderer.js +0 -5
  224. package/build/renderers/CoreRootRenderer.js +0 -12
  225. package/build/renderers/EmptyLoadingStateRenderer.js +0 -5
  226. package/build/renderers/getRenderFunction.js +0 -24
  227. package/build/renderers/getSchemaErrorMessageFunction.js +0 -97
  228. package/build/renderers/mappers/alertComponentToProps.js +0 -2
  229. package/build/renderers/mappers/allOfComponentToProps.js +0 -6
  230. package/build/renderers/mappers/booleanInputComponentToProps.js +0 -5
  231. package/build/renderers/mappers/boxComponentToProps.js +0 -13
  232. package/build/renderers/mappers/buttonComponentToProps.js +0 -4
  233. package/build/renderers/mappers/columnsComponentToProps.js +0 -11
  234. package/build/renderers/mappers/componentToRendererProps.js +0 -164
  235. package/build/renderers/mappers/constComponentToProps.js +0 -5
  236. package/build/renderers/mappers/containerComponentToProps.js +0 -7
  237. package/build/renderers/mappers/dateInputComponentToProps.js +0 -2
  238. package/build/renderers/mappers/decisionComponentToProps.js +0 -16
  239. package/build/renderers/mappers/dividerComponentToProps.js +0 -2
  240. package/build/renderers/mappers/externalComponentToProps.js +0 -3
  241. package/build/renderers/mappers/formComponentToProps.js +0 -12
  242. package/build/renderers/mappers/formattedValueComponentToProps.js +0 -5
  243. package/build/renderers/mappers/headingComponentToProps.js +0 -2
  244. package/build/renderers/mappers/hiddenComponentToProps.js +0 -4
  245. package/build/renderers/mappers/imageComponentToProps.js +0 -2
  246. package/build/renderers/mappers/instructionsComponentToProps.js +0 -2
  247. package/build/renderers/mappers/integerInputComponentToProps.js +0 -2
  248. package/build/renderers/mappers/listComponentToProps.js +0 -2
  249. package/build/renderers/mappers/loadingIndicatorComponentToProps.js +0 -2
  250. package/build/renderers/mappers/markdownComponentToProps.js +0 -2
  251. package/build/renderers/mappers/mediaComponentToProps.js +0 -2
  252. package/build/renderers/mappers/modalComponentToProps.js +0 -11
  253. package/build/renderers/mappers/modalLayoutComponentToProps.js +0 -16
  254. package/build/renderers/mappers/moneyInputComponentToProps.js +0 -36
  255. package/build/renderers/mappers/multiSelectComponentToProps.js +0 -23
  256. package/build/renderers/mappers/multiUploadInputComponentToProps.js +0 -12
  257. package/build/renderers/mappers/numberInputComponentToProps.js +0 -2
  258. package/build/renderers/mappers/objectComponentToProps.js +0 -8
  259. package/build/renderers/mappers/paragraphComponentToProps.js +0 -2
  260. package/build/renderers/mappers/persistAsyncComponentToProps.js +0 -8
  261. package/build/renderers/mappers/progressComponentToProps.js +0 -2
  262. package/build/renderers/mappers/repeatableComponentToProps.js +0 -30
  263. package/build/renderers/mappers/reviewComponentToProps.js +0 -2
  264. package/build/renderers/mappers/rootComponentToProps.js +0 -21
  265. package/build/renderers/mappers/searchComponentToProps.js +0 -57
  266. package/build/renderers/mappers/sectionComponentToProps.js +0 -6
  267. package/build/renderers/mappers/selectInputComponentToProps.js +0 -26
  268. package/build/renderers/mappers/statusListComponentToProps.js +0 -2
  269. package/build/renderers/mappers/subflowComponentToRendererProps.js +0 -4
  270. package/build/renderers/mappers/tabsComponentToProps.js +0 -14
  271. package/build/renderers/mappers/textInputComponentToProps.js +0 -2
  272. package/build/renderers/mappers/tupleComponentToProps.js +0 -8
  273. package/build/renderers/mappers/uploadInputComponentToProps.js +0 -8
  274. package/build/renderers/mappers/upsellComponentToProps.js +0 -2
  275. package/build/renderers/mappers/utils/getValidationState.js +0 -12
  276. package/build/renderers/mappers/utils/inputComponentToProps.js +0 -26
  277. package/build/renderers/mappers/utils/mapErrorsToValidationState.js +0 -9
  278. package/build/renderers/mappers/utils/pick.js +0 -8
  279. package/build/renderers/mappers/utils/selectInputOptionsToProps.js +0 -11
  280. package/build/renderers/stepComponentToProps.js +0 -32
  281. package/build/renderers/utils.js +0 -69
  282. package/build/renderers/utils.test.js +0 -70
  283. package/build/stories/dev-tools/ContainerQueries.story.js +0 -66
  284. package/build/stories/dev-tools/Debugger.story.js +0 -38
  285. package/build/stories/dev-tools/FixtureSelect.story.js +0 -23
  286. package/build/stories/dev-tools/TestServer.story.js +0 -32
  287. package/build/stories/examples/NativeFlow.story.js +0 -80
  288. package/build/stories/examples/Recipients.story.js +0 -568
  289. package/build/stories/spec/behavior/Copy.story.js +0 -59
  290. package/build/stories/spec/behavior/Modal.story.js +0 -76
  291. package/build/stories/spec/behavior/Subflow.story.js +0 -267
  292. package/build/stories/spec/layouts/Decision.story.js +0 -241
  293. package/build/stories/spec/layouts/Image.story.js +0 -42
  294. package/build/stories/spec/layouts/Modal.story.js +0 -81
  295. package/build/stories/spec/layouts/Search.story.js +0 -325
  296. package/build/stories/spec/layouts/Upsell.story.js +0 -55
  297. package/build/stories/spec/layouts/button/Button.story.js +0 -100
  298. package/build/stories/spec/layouts/button/PinnedButton.story.js +0 -81
  299. package/build/stories/spec/response/ActionResponse.story.js +0 -66
  300. package/build/stories/spec/schemas/MultiSelect.story.js +0 -148
  301. package/build/stories/spec/schemas/Upload.story.js +0 -168
  302. package/build/stories/spec/schemas/const/ConstLayout.story.js +0 -159
  303. package/build/stories/spec/schemas/const/ObjectConst.story.js +0 -94
  304. package/build/stories/spec/schemas/features/PersistAsync.story.js +0 -176
  305. package/build/stories/spec/schemas/features/ValidationAsync.story.js +0 -103
  306. package/build/stories/spec/schemas/object/FormattedValue.story.js +0 -92
  307. package/build/stories/spec/schemas/object/MoneyInput.story.js +0 -240
  308. package/build/stories/spec/schemas/oneOf/OneOfInitialisation.story.js +0 -55
  309. package/build/stories/spec/step/Controls.story.js +0 -109
  310. package/build/stories/spec/step/DFModal.story.js +0 -58
  311. package/build/stories/spec/step/Footer.story.js +0 -70
  312. package/build/stories/spec/step/Navigation.story.js +0 -20
  313. package/build/stories/spec/step/Tags.story.js +0 -39
  314. package/build/stories/spec/step/ToolBar.story.js +0 -60
  315. package/build/stories/spec/step/features/ErrorHandling.story.js +0 -92
  316. package/build/stories/spec/step/features/External.story.js +0 -44
  317. package/build/stories/spec/step/features/Polling.story.js +0 -108
  318. package/build/stories/spec/step/features/RefreshAfter.story.js +0 -92
  319. package/build/stories/spec/step/features/refresh/Refresh.story.js +0 -258
  320. package/build/stories/spec/step/features/refresh/RefreshWithPersistAsync.story.js +0 -958
  321. package/build/stories/types.js +0 -1
  322. package/build/stories/utils/fixtureHttpClient.js +0 -70
  323. package/build/stories/utils/getBasicStep.js +0 -223
  324. package/build/stories/utils/mockSearchHandler.js +0 -71
  325. package/build/stories/utils/render-utils.js +0 -41
  326. package/build/stories/visual-tests/layouts/NotUsingListItem.story.js +0 -17
  327. package/build/test-utils/DynamicFlowWise.js +0 -32
  328. package/build/test-utils/DynamicFlowWiseModal.js +0 -34
  329. package/build/test-utils/NeptuneProviders.js +0 -11
  330. package/build/test-utils/component-utils.js +0 -5
  331. package/build/test-utils/fetch-utils.js +0 -45
  332. package/build/test-utils/getMergedTestRenderers.js +0 -34
  333. package/build/test-utils/getRandomId.js +0 -1
  334. package/build/test-utils/index.js +0 -3
  335. package/build/test-utils/rtl-utils.js +0 -7
  336. package/build/test-utils/step-utils.js +0 -6
  337. package/build/test-utils/wait.js +0 -3
  338. package/build/tests/AlertLayout.test.js +0 -78
  339. package/build/tests/ArrayTuple.test.js +0 -118
  340. package/build/tests/ButtonLayout.test.js +0 -308
  341. package/build/tests/ConstLayout.test.js +0 -95
  342. package/build/tests/DateInput.test.js +0 -163
  343. package/build/tests/DecisionLayout.test.js +0 -146
  344. package/build/tests/DynamicFlow.test.js +0 -147
  345. package/build/tests/External.test.js +0 -169
  346. package/build/tests/Flow.test.js +0 -328
  347. package/build/tests/FormLayout.test.js +0 -28
  348. package/build/tests/FormattedValue.test.js +0 -107
  349. package/build/tests/ImageRenderer.test.js +0 -78
  350. package/build/tests/InitialAction.test.js +0 -179
  351. package/build/tests/InitialStep.test.js +0 -168
  352. package/build/tests/InstructionsLayout.test.js +0 -45
  353. package/build/tests/ListLayout.test.js +0 -145
  354. package/build/tests/Logging.test.js +0 -53
  355. package/build/tests/ModalBehavior.test.js +0 -149
  356. package/build/tests/MoneyInput.test.js +0 -316
  357. package/build/tests/MultiUpload.test.js +0 -293
  358. package/build/tests/NativeBack.test.js +0 -267
  359. package/build/tests/OneOfInitialisation.test.js +0 -571
  360. package/build/tests/PersistAsync.test.js +0 -653
  361. package/build/tests/Polling.test.js +0 -617
  362. package/build/tests/Prefetching.test.js +0 -230
  363. package/build/tests/RefreshAfter.test.js +0 -63
  364. package/build/tests/RefreshOnChange.ResponseHandling.test.js +0 -205
  365. package/build/tests/RefreshOnChange.test.js +0 -233
  366. package/build/tests/RefreshOnChange.with.Segmented.test.js +0 -348
  367. package/build/tests/RefreshOnChange.with.Tabs.test.js +0 -358
  368. package/build/tests/RefreshOnChangePreserve.test.js +0 -224
  369. package/build/tests/RendererProps.test.js +0 -342
  370. package/build/tests/Repeatable.test.js +0 -107
  371. package/build/tests/Rerendering.test.js +0 -67
  372. package/build/tests/ReviewLayout.test.js +0 -274
  373. package/build/tests/SchemaOnChange.test.js +0 -133
  374. package/build/tests/ScrollToError.test.js +0 -217
  375. package/build/tests/SegmentedControl.test.js +0 -49
  376. package/build/tests/SingleFileUpload.test.js +0 -88
  377. package/build/tests/StatusList.test.js +0 -85
  378. package/build/tests/Subflow.test.js +0 -710
  379. package/build/tests/Submission.ResponseHandling.test.js +0 -557
  380. package/build/tests/Submission.merging.test.js +0 -202
  381. package/build/tests/Submission.test.js +0 -523
  382. package/build/tests/Tags.test.js +0 -475
  383. package/build/tests/Upsell.test.js +0 -126
  384. package/build/tests/ValidationAsync.test.js +0 -295
  385. package/build/tests/legacy/Actions.test.js +0 -158
  386. package/build/tests/legacy/BackButton.test.js +0 -114
  387. package/build/tests/legacy/HiddenSchemas.test.js +0 -246
  388. package/build/tests/legacy/MultiSelect.test.js +0 -497
  389. package/build/tests/legacy/MultipleFileUploadSchema.test.js +0 -341
  390. package/build/tests/legacy/PersistAsync.blob-schema.test.js +0 -224
  391. package/build/tests/legacy/PersistAsync.string-schema.test.js +0 -211
  392. package/build/tests/legacy/RefreshStepOnChange.debouncing.test.js +0 -209
  393. package/build/tests/legacy/RefreshStepOnChange.test.js +0 -424
  394. package/build/tests/legacy/Search.test.js +0 -437
  395. package/build/tests/renderers/MultiSelectInputRendererProps.test.js +0 -58
  396. package/build/tests/renderers/SelectInputRendererProps.test.js +0 -42
  397. package/build/tests/renderers/TextInputRenderer.test.js +0 -51
  398. package/build/types.js +0 -1
  399. package/build/useDynamicFlow.js +0 -104
  400. package/build/useDynamicFlowModal.js +0 -58
  401. package/build/utils/analyse-step.js +0 -14
  402. package/build/utils/component-utils.js +0 -8
  403. package/build/utils/component-utils.test.js +0 -113
  404. package/build/utils/getScrollToTop.js +0 -12
  405. package/build/utils/normalise-flow-id.js +0 -1
  406. package/build/utils/normalise-flow-id.test.js +0 -24
  407. package/build/utils/openLinkInNewTab.js +0 -10
  408. package/build/utils/recursiveMerge.js +0 -40
  409. package/build/utils/recursiveMerge.test.js +0 -93
  410. package/build/utils/type-utils.js +0 -21
  411. package/build/utils/type-validators.js +0 -11
  412. package/build/utils/type-validators.test.js +0 -180
  413. package/build/utils/useStableCallback.js +0 -15
@@ -1,497 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { screen, waitFor } from '@testing-library/react';
3
- import { userEvent } from '@testing-library/user-event';
4
- import { renderWithProviders } from '../../test-utils';
5
- import DynamicFlowWise from '../../test-utils/DynamicFlowWise';
6
- import { vi } from 'vitest';
7
- const user = userEvent.setup({ advanceTimers: vi.advanceTimersByTime });
8
- const currencySelectSchema = (arraySchemaControl) => ({
9
- $id: '#schema',
10
- type: 'object',
11
- displayOrder: ['currencies'],
12
- required: [],
13
- properties: {
14
- currencies: {
15
- type: 'array',
16
- title: 'Select your currencies',
17
- minItems: 2,
18
- maxItems: 2,
19
- description: 'This is an example of an array schema with const options.',
20
- addItemTitle: '',
21
- editItemTitle: '',
22
- control: arraySchemaControl,
23
- items: {
24
- oneOf: [
25
- {
26
- title: 'EUR',
27
- description: 'Euro',
28
- icon: { name: 'flag-eur' },
29
- const: 'EUR',
30
- },
31
- {
32
- title: 'GBP',
33
- description: 'British pound',
34
- icon: { name: 'flag-gbp' },
35
- const: 'GBP',
36
- },
37
- {
38
- title: 'USD',
39
- description: 'US dollar',
40
- icon: { name: 'flag-usd' },
41
- const: 'USD',
42
- },
43
- ],
44
- },
45
- },
46
- },
47
- });
48
- const basicStep = (arraySchemaControl) => ({
49
- id: 'MultiSelect',
50
- title: '',
51
- schemas: [currencySelectSchema(arraySchemaControl)],
52
- layout: [
53
- {
54
- type: 'form',
55
- schemaId: '#schema',
56
- },
57
- {
58
- type: 'button',
59
- title: 'Submit',
60
- action: { url: '/submit', method: 'POST' },
61
- },
62
- ],
63
- });
64
- const mockHttpClient = vi.fn();
65
- const getProps = (overrides = {}) => (Object.assign({ flowId: 'repeatable-test-flow-id', initialStep: basicStep(undefined), httpClient: mockHttpClient, onCompletion: vi.fn(), onError: vi.fn(), onEvent: vi.fn(), onLog: vi.fn(), onLink: vi.fn() }, overrides));
66
- describe('Multi-Select', () => {
67
- it('renders the SelectInput component', () => {
68
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, getProps({}))));
69
- expect(screen.getByRole('combobox', { name: /select your currencies/i })).toBeInTheDocument();
70
- });
71
- describe('when a model is provided', () => {
72
- it('should initialise the component with pre-selected values from the model', async () => {
73
- const props = getProps({
74
- initialStep: Object.assign(Object.assign({}, basicStep(undefined)), { model: { currencies: ['USD', 'GBP'] } }),
75
- });
76
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
77
- expect(screen.getByText(/USD and 1 more/)).toBeInTheDocument();
78
- await user.click(screen.getByRole('button', { name: /submit/i }));
79
- await waitFor(() => {
80
- expect(mockHttpClient).toHaveBeenCalledWith('/submit', expect.objectContaining({
81
- body: JSON.stringify({ currencies: ['USD', 'GBP'] }),
82
- }));
83
- });
84
- });
85
- it('should only initialise with values in the OneOf', async () => {
86
- const props = getProps({
87
- initialStep: Object.assign(Object.assign({}, basicStep(undefined)), { model: { currencies: ['GBP', 'USD', 'AUD'] } }),
88
- });
89
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
90
- expect(screen.getByText(/GBP and 1 more/)).toBeInTheDocument();
91
- await user.click(screen.getByRole('button', { name: /submit/i }));
92
- await waitFor(() => {
93
- expect(mockHttpClient).toHaveBeenCalledWith('/submit', expect.objectContaining({
94
- body: JSON.stringify({ currencies: ['GBP', 'USD'] }),
95
- }));
96
- });
97
- });
98
- });
99
- describe('when validation errors are provided in the step', () => {
100
- const props = getProps({
101
- initialStep: Object.assign(Object.assign({}, basicStep(undefined)), { model: null, errors: { validation: { currencies: 'You cannot select USD and EUR' } } }),
102
- });
103
- it('should display initial errors', () => {
104
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
105
- expect(screen.getByText(/you cannot select usd and eur/i)).toBeInTheDocument();
106
- });
107
- it('should hide them when the selection has changed', async () => {
108
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
109
- await user.click(screen.getByRole('combobox', { name: /Select your currencies/ }));
110
- await waitFor(() => {
111
- expect(screen.getByText(/gbp/i)).toBeInTheDocument();
112
- });
113
- await user.click(screen.getByText(/gbp/i));
114
- await user.keyboard('{Escape}');
115
- expect(screen.queryByText(/you cannot select usd and eur/i)).not.toBeInTheDocument();
116
- });
117
- });
118
- describe('when the user selects an item', () => {
119
- const props = getProps({
120
- initialStep: Object.assign(Object.assign({}, basicStep(undefined)), { model: { currencies: ['USD'] } }),
121
- });
122
- it('should show in the input box', async () => {
123
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
124
- await user.click(screen.getByRole('combobox', { name: 'Select your currencies' }));
125
- await user.click(screen.getByText('EUR'));
126
- expect(screen.getByText(/USD and 1 more/)).toBeInTheDocument();
127
- });
128
- it('should be added to the model', async () => {
129
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
130
- await user.click(screen.getByRole('combobox', { name: 'Select your currencies' }));
131
- await user.click(screen.getByText('EUR'));
132
- await user.click(screen.getByRole('button', { name: /submit/i }));
133
- await waitFor(() => {
134
- expect(mockHttpClient).toHaveBeenCalledWith('/submit', expect.objectContaining({
135
- body: JSON.stringify({ currencies: ['USD', 'EUR'] }),
136
- }));
137
- });
138
- });
139
- });
140
- describe('when the user de-selects an item', () => {
141
- const props = getProps({
142
- initialStep: Object.assign(Object.assign({}, basicStep(undefined)), { model: { currencies: ['USD', 'EUR', 'GBP'] } }),
143
- });
144
- it('should remove from the input box', async () => {
145
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
146
- await user.click(screen.getByRole('combobox', { name: 'Select your currencies' }));
147
- await user.click(screen.getByText('EUR'));
148
- expect(screen.getByText(/USD and 1 more/)).toBeInTheDocument();
149
- });
150
- it('should be removed from the model', async () => {
151
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
152
- await user.click(screen.getByRole('combobox', { name: 'Select your currencies' }));
153
- await user.click(screen.getByText('EUR'));
154
- await user.click(screen.getByRole('button', { name: /submit/i }));
155
- await waitFor(() => {
156
- expect(mockHttpClient).toHaveBeenCalledWith('/submit', expect.objectContaining({
157
- body: JSON.stringify({ currencies: ['USD', 'GBP'] }),
158
- }));
159
- });
160
- });
161
- });
162
- // modified
163
- describe('local validation', () => {
164
- describe('when minItems is provided', () => {
165
- it('should pass validation when no items are provided', async () => {
166
- mockHttpClient.mockReset();
167
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, getProps())));
168
- await user.click(screen.getByRole('button', { name: 'Submit' }));
169
- await waitFor(() => {
170
- expect(mockHttpClient).toHaveBeenCalledWith('/submit', expect.anything());
171
- });
172
- });
173
- it('should show an error message onClose when selected is greater than 0 but below minItems', async () => {
174
- mockHttpClient.mockReset();
175
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, getProps())));
176
- // open
177
- await user.click(screen.getByRole('combobox', { name: 'Select your currencies' }));
178
- await user.click(screen.getByText('EUR'));
179
- // close
180
- await user.keyboard('{Escape}');
181
- await waitFor(() => {
182
- expect(screen.getByText(/please add at least 2/i)).toBeInTheDocument();
183
- });
184
- });
185
- });
186
- describe('when maxItems is provided', () => {
187
- it('should show an error message onClose', async () => {
188
- mockHttpClient.mockReset();
189
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, getProps())));
190
- // open
191
- await user.click(screen.getByRole('combobox', { name: 'Select your currencies' }));
192
- await user.click(screen.getByText('EUR'));
193
- await user.click(screen.getByText('USD'));
194
- await user.click(screen.getByText('GBP'));
195
- // close
196
- await user.keyboard('{Escape}');
197
- await waitFor(() => {
198
- expect(screen.getByText(/please add 2 or fewer/i)).toBeInTheDocument();
199
- });
200
- });
201
- });
202
- describe('when required is provided', () => {
203
- const props = getProps({
204
- initialStep: Object.assign(Object.assign({}, basicStep(undefined)), { schemas: [
205
- Object.assign(Object.assign({}, currencySelectSchema(undefined)), { required: ['currencies'] }),
206
- ] }),
207
- });
208
- it('should show an error message when submission is attempted and no values selected', async () => {
209
- mockHttpClient.mockReset();
210
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
211
- await user.click(screen.getByRole('button', { name: /submit/i }));
212
- expect(screen.getByText(/please fill out this field/i)).toBeInTheDocument();
213
- });
214
- it('should show onClose after deselecting all options', async () => {
215
- mockHttpClient.mockReset();
216
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
217
- // open
218
- await user.click(screen.getByRole('combobox', { name: 'Select your currencies' }));
219
- await user.click(screen.getByRole('option', { name: 'EUR Euro' }));
220
- await user.click(screen.getByRole('option', { name: 'USD US dollar' }));
221
- // close
222
- await user.keyboard('{Escape}');
223
- // open
224
- await user.click(screen.getByRole('combobox', { name: 'Select your currencies' }));
225
- await user.click(screen.getByRole('option', { name: 'EUR Euro' }));
226
- await user.click(screen.getByRole('option', { name: 'USD US dollar' }));
227
- // close
228
- await user.keyboard('{Escape}');
229
- expect(screen.getByText(/please fill out this field/i)).toBeInTheDocument();
230
- });
231
- });
232
- describe('when custom validation messages are provided', () => {
233
- const schemaWithCustomValidationMessages = {
234
- $id: '#schema',
235
- type: 'object',
236
- displayOrder: ['currencies'],
237
- required: ['currencies'],
238
- properties: {
239
- currencies: {
240
- type: 'array',
241
- title: 'Select your currencies',
242
- description: 'This is an example of an array schema with const options.',
243
- validationMessages: {
244
- required: 'custom required message',
245
- },
246
- addItemTitle: '',
247
- editItemTitle: '',
248
- items: {
249
- oneOf: [
250
- {
251
- title: 'EUR',
252
- description: 'Euro',
253
- icon: { name: 'flag-eur' },
254
- const: 'EUR',
255
- },
256
- {
257
- title: 'GBP',
258
- description: 'British pound',
259
- icon: { name: 'flag-gbp' },
260
- const: 'GBP',
261
- },
262
- {
263
- title: 'USD',
264
- description: 'US dollar',
265
- icon: { name: 'flag-usd' },
266
- const: 'USD',
267
- },
268
- ],
269
- },
270
- },
271
- },
272
- };
273
- const props = getProps({
274
- initialStep: Object.assign(Object.assign({}, basicStep(undefined)), { schemas: [schemaWithCustomValidationMessages] }),
275
- });
276
- it('should use those when showing errors', async () => {
277
- mockHttpClient.mockReset();
278
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
279
- await user.click(screen.getByRole('button', { name: /submit/i }));
280
- await waitFor(() => {
281
- expect(screen.getByText(/custom required message/i)).toBeInTheDocument();
282
- });
283
- });
284
- });
285
- });
286
- // NEW IN REVAMP
287
- describe('async operations', () => {
288
- describe('validation async', () => {
289
- const currencySelectValidationAsyncSchema = {
290
- $id: '#schema',
291
- type: 'object',
292
- displayOrder: ['currencies'],
293
- required: [],
294
- properties: {
295
- currencies: {
296
- type: 'array',
297
- title: 'Select your currencies',
298
- description: 'This is an example of an array schema with const options.',
299
- addItemTitle: '',
300
- editItemTitle: '',
301
- validationAsync: {
302
- param: 'value',
303
- method: 'POST',
304
- url: '/validate',
305
- },
306
- items: {
307
- oneOf: [
308
- {
309
- title: 'EUR',
310
- description: 'Euro',
311
- icon: { name: 'flag-eur' },
312
- const: 'EUR',
313
- },
314
- {
315
- title: 'GBP',
316
- description: 'British pound',
317
- icon: { name: 'flag-gbp' },
318
- const: 'GBP',
319
- },
320
- {
321
- title: 'USD',
322
- description: 'US dollar',
323
- icon: { name: 'flag-usd' },
324
- const: 'USD',
325
- },
326
- ],
327
- },
328
- },
329
- },
330
- };
331
- const props = getProps({
332
- initialStep: Object.assign(Object.assign({}, basicStep(undefined)), { schemas: [currencySelectValidationAsyncSchema] }),
333
- });
334
- it('triggers validation async when the dropdown is closed', async () => {
335
- mockHttpClient.mockReset();
336
- const mockOnEvent = vi.fn();
337
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props, { onEvent: mockOnEvent })));
338
- // open
339
- await user.click(screen.getByRole('combobox', { name: 'Select your currencies' }));
340
- await user.click(screen.getByText('EUR'));
341
- // close
342
- await user.keyboard('{Escape}');
343
- await waitFor(() => {
344
- expect(mockHttpClient).toHaveBeenCalledWith('/validate', expect.anything());
345
- });
346
- });
347
- });
348
- });
349
- });
350
- describe('Inline Multi-Select', () => {
351
- it('renders the ListItem components', () => {
352
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, getProps({ initialStep: basicStep('inline') }))));
353
- expect(screen.getByRole('checkbox', { name: /EUR Euro/i })).toBeInTheDocument();
354
- expect(screen.getByRole('checkbox', { name: /GBP British pound/i })).toBeInTheDocument();
355
- expect(screen.getByRole('checkbox', { name: /USD US dollar/i })).toBeInTheDocument();
356
- });
357
- describe('when a model is provided', () => {
358
- it('should initialise each list item with pre-selected values from the model', async () => {
359
- const props = getProps({
360
- initialStep: Object.assign(Object.assign({}, basicStep('inline')), { model: { currencies: ['USD', 'GBP'] } }),
361
- });
362
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
363
- expect(screen.getByRole('checkbox', { name: /USD US dollar/i })).toBeChecked();
364
- expect(screen.getByRole('checkbox', { name: /GBP British pound/i })).toBeChecked();
365
- expect(screen.getByRole('checkbox', { name: /EUR Euro/i })).not.toBeChecked();
366
- });
367
- });
368
- describe('when validation errors are provided in the step', () => {
369
- const props = getProps({
370
- initialStep: Object.assign(Object.assign({}, basicStep('inline')), { model: null, errors: { validation: { currencies: 'You cannot select USD and EUR' } } }),
371
- });
372
- it('should display initial errors', () => {
373
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
374
- expect(screen.getByText(/you cannot select usd and eur/i)).toBeInTheDocument();
375
- });
376
- });
377
- describe('when the user selects an item', () => {
378
- const props = getProps({
379
- initialStep: Object.assign(Object.assign({}, basicStep('inline')), { model: { currencies: ['USD'] } }),
380
- });
381
- it('should show as checked', async () => {
382
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
383
- await user.click(screen.getByRole('checkbox', { name: /EUR Euro/i }));
384
- expect(screen.getByRole('checkbox', { name: /EUR Euro/i })).toBeChecked();
385
- });
386
- it('should be added to the model', async () => {
387
- mockHttpClient.mockReset();
388
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
389
- await user.click(screen.getByRole('checkbox', { name: /EUR Euro/i }));
390
- await user.click(screen.getByRole('button', { name: /submit/i }));
391
- await waitFor(() => {
392
- expect(mockHttpClient).toHaveBeenCalledWith('/submit', expect.objectContaining({
393
- body: JSON.stringify({ currencies: ['USD', 'EUR'] }),
394
- }));
395
- });
396
- });
397
- });
398
- describe('when the user de-selects an item', () => {
399
- const props = getProps({
400
- initialStep: Object.assign(Object.assign({}, basicStep('inline')), { model: { currencies: ['USD', 'EUR', 'GBP'] } }),
401
- });
402
- it('should show as unchecked', async () => {
403
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
404
- await user.click(screen.getByRole('checkbox', { name: /EUR Euro/i }));
405
- expect(screen.getByRole('checkbox', { name: /EUR Euro/i })).not.toBeChecked();
406
- });
407
- it('should be removed from the model', async () => {
408
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
409
- await user.click(screen.getByRole('checkbox', { name: /EUR Euro/i }));
410
- await user.click(screen.getByRole('button', { name: /submit/i }));
411
- await waitFor(() => {
412
- expect(mockHttpClient).toHaveBeenCalledWith('/submit', expect.objectContaining({
413
- body: JSON.stringify({ currencies: ['USD', 'GBP'] }),
414
- }));
415
- });
416
- });
417
- });
418
- describe('local validation', () => {
419
- describe('when minItems is provided', () => {
420
- it('should show an error message when selected is below minItems', async () => {
421
- const props = getProps({ initialStep: basicStep('inline') });
422
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
423
- await user.click(screen.getByRole('checkbox', { name: /EUR Euro/i }));
424
- await waitFor(() => {
425
- expect(screen.getByText(/please add at least 2/i)).toBeInTheDocument();
426
- });
427
- });
428
- });
429
- describe('when maxItems is provided', () => {
430
- it('should show an error message when selected is above maxItems', async () => {
431
- const props = getProps({
432
- initialStep: Object.assign(Object.assign({}, basicStep('inline')), { model: { currencies: ['USD'] } }),
433
- });
434
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
435
- await user.click(screen.getByRole('checkbox', { name: /EUR Euro/i }));
436
- await user.click(screen.getByRole('checkbox', { name: /GBP British pound/i }));
437
- await waitFor(() => {
438
- expect(screen.getByText(/please add 2 or fewer/i)).toBeInTheDocument();
439
- });
440
- });
441
- });
442
- describe('when required is provided', () => {
443
- const props = getProps({
444
- initialStep: Object.assign(Object.assign({}, basicStep('inline')), { schemas: [
445
- Object.assign(Object.assign({}, currencySelectSchema('inline')), { required: ['currencies'] }),
446
- ] }),
447
- });
448
- it('should show an error message when submission is attempted and no values selected', async () => {
449
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
450
- await user.click(screen.getByRole('button', { name: /submit/i }));
451
- expect(screen.getByText(/please fill out this field/i)).toBeInTheDocument();
452
- });
453
- });
454
- describe('when custom validation messages are provided', () => {
455
- //
456
- const schema = currencySelectSchema('inline');
457
- schema.required = ['currencies'];
458
- const arraySchema = schema.properties.currencies;
459
- arraySchema.validationMessages = {
460
- required: 'custom required message',
461
- };
462
- const props = getProps({
463
- initialStep: Object.assign(Object.assign({}, basicStep('inline')), { schemas: [schema] }),
464
- });
465
- it('should use those when showing errors', async () => {
466
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props)));
467
- await user.click(screen.getByRole('button', { name: /submit/i }));
468
- await waitFor(() => {
469
- expect(screen.getByText(/custom required message/i)).toBeInTheDocument();
470
- });
471
- });
472
- });
473
- });
474
- describe('async operations', () => {
475
- describe('validation async', () => {
476
- const schema = currencySelectSchema('inline');
477
- const arraySchema = schema.properties.currencies;
478
- arraySchema.validationAsync = {
479
- param: 'value',
480
- method: 'POST',
481
- url: '/validate',
482
- };
483
- const props = getProps({
484
- initialStep: Object.assign(Object.assign({}, basicStep('inline')), { schemas: [schema] }),
485
- });
486
- it('triggers validation async when an item is selected', async () => {
487
- mockHttpClient.mockReset();
488
- renderWithProviders(_jsx(DynamicFlowWise, Object.assign({}, props, { onEvent: vi.fn() })));
489
- await user.click(screen.getByRole('checkbox', { name: /EUR Euro/i }));
490
- await user.click(screen.getByRole('checkbox', { name: /USD US dollar/i }));
491
- await waitFor(() => {
492
- expect(mockHttpClient).toHaveBeenCalledWith('/validate', expect.anything());
493
- });
494
- });
495
- });
496
- });
497
- });